我的代码运行良好,但是我需要将此框设置为 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
我附上了一张屏幕截图来显示盒子组。如有任何帮助,我们将不胜感激。
我尝试重复代码,但没有成功,但我不懂代码
框架挑战。更有效的方法可能是使用 Excel 本机函数而不是 VBA。以下函数将放置在您要填充的单元格中。
=if(or(LivestockRow1 = 0,isblank(livestockrow1)), "", index(Livestocklist,match(livestockRow1, LivestockList,0),RelevantColumn))
这完全未经测试,您必须使用相关单元格更改我的命名占位符(提示:尽可能使用命名范围)。相关列将保存您要放入单元格中的数据位 (
Livestock_List.Range("H" & Livestockrow).Value
)。
现在可以轻松地将一个 Livestock 记录中的此块复制到下面的重复记录 - 调整 LivestockRow1 为 LivestockRow2 等。
当重新计算工作簿时,数字将更新 - 当新数据放入这些单元格时。无需更改事件。