Microsoft Excel:在不同单元格中重复的宏

问题描述 投票:0回答:1

我的代码运行良好,但是我需要将此框设置为 4 个不同的框。这列出了牲畜,并将从同一张表中添加/提取信息,但每个范围内的每个库存都不同。

例如,第一个套装可能有“库存 224”,第二个套装可能有“库存 225”

'On Livestock Change
If Not Intersect(Target, Range("E19")) Is Nothing Then
    Dim Stockrow As Long
    If Range("E19").Value <> Empty Then
        If Range("B8").Value = Empty Then 'Not Existing livestock
            If MsgBox("The customer is not currently in the Livestock list. Would you like to add it?", vbYesNo, "Customer Not Found") = vbNo Then Exit Sub
            'Launch userform to add livestock
            
        Else 'Existing Customer Found
            Livestockrow = Range("B8").Value ' Livestock Row
            Range("L19:M19").Value = Livestock_List.Range("C" & Livestockrow).Value 'DOB
            Range("E20:I20").Value = Livestock_List.Range("D" & Livestockrow).Value 'breed
            Range("L20:M20").Value = Livestock_List.Range("E" & Livestockrow).Value 'EID
            Range("E21:F21").Value = Livestock_List.Range("F" & Livestockrow).Value 'Registered
            Range("I21").Value = Livestock_List.Range("G" & Livestockrow).Value 'Registrration
            Range("L21:M21").Value = Livestock_List.Range("H" & Livestockrow).Value 'Registrration Number
            Range("E22:I22").Value = Livestock_List.Range("I" & Livestockrow).Value 'SIRE
            Range("L22:M22").Value = Livestock_List.Range("J" & Livestockrow).Value 'Sire Registrration Number
            Range("E23:I23").Value = Livestock_List.Range("K" & Livestockrow).Value 'Dam
            Range("L23:M23").Value = Livestock_List.Range("L" & Livestockrow).Value 'Dam Registrration

        End If
        
    Else 'Is Empty
        Range("L19:M19").ClearContents 'Clear DOB
        Range("E20:I20").ClearContents 'Clear breed
        Range("L20:M20").ClearContents 'Clear EID
        Range("E21:F21").ClearContents 'ClearRegistered
        Range("I21").ClearContents 'Clear Registrration
        Range("L21:M21").ClearContents 'Clear Registrration Number
        Range("E22:I22").ClearContents 'Clear'SIRE
        Range("L22:M22").ClearContents 'Clear Sire Registrration Number
        Range("E23:I23").ClearContents 'Clear Dam
        Range("L23:M23").ClearContents 'Clear Dam Registrration

    End If

我附上了一张屏幕截图来显示盒子组。如有任何帮助,我们将不胜感激。

我尝试重复代码,但没有成功,但我不懂代码

enter image description here

excel vba repeat
1个回答
0
投票

框架挑战。更有效的方法可能是使用 Excel 本机函数而不是 VBA。以下函数将放置在您要填充的单元格中。

=if(or(LivestockRow1 = 0,isblank(livestockrow1)), "", index(Livestocklist,match(livestockRow1, LivestockList,0),RelevantColumn))

这完全未经测试,您必须使用相关单元格更改我的命名占位符(提示:尽可能使用命名范围)。相关列将保存您要放入单元格中的数据位 (

Livestock_List.Range("H" & Livestockrow).Value
)。

现在可以轻松地将一个 Livestock 记录中的此块复制到下面的重复记录 - 调整 LivestockRow1 为 LivestockRow2 等。

当重新计算工作簿时,数字将更新 - 当新数据放入这些单元格时。无需更改事件。

© www.soinside.com 2019 - 2024. All rights reserved.