VBA在1个工作簿中检查标准,在另一个工作簿中input值
我正在努力弄清楚如何让代码做我想做的事情,我尽可能多地写了我能在网上find的东西,但是对于某些方面,我不知道写什么。
代码的目的
在每个名称旁边的数字“1”选中“电子表格2017”。 如果有“1”,则在名为“date模板”的另一个工作簿(与“电子表格2017”中的名称相同的行)中的一行中的多个单元格中input值
关于我想要做什么的细节
- A列和B列名(A),姓(B)
- 通过列C检查名称旁边的“1”
- 如果有1,则切换到工作簿“date模板”
- 在列A中find相同的名称,并将值7.2(col B),3.9(col C)和74.2(col D)。
这是代码的基本骨干,将来我会考虑添加更多的条件,例如D列为1,C列为1。所以也许case函数会更好,那么它会更容易在未来添加。 我不知道哪个更好。
在下面的代码中,我只写了它来扫描列B中的姓氏,因为没有重复。 但将来可能会有同姓的姓名,在这种情况下,名字也必须被读取。 这是我如何检查两个困惑。
如果可以将名称列表复制到“date模板”,然后在满足标准的情况下input这些值,则可以获得奖励。 因为此刻我手动input名称到“date模板”电子表格上。
Sub Summary() Dim wb1 As Workbook Dim Sht As Worksheet Dim Rng As Range Dim wb2 As Workbook Dim cell As Range Dim ws As Worksheet Set wb1 = Workbooks("Works template.xlsm") Set wb2 = Workbooks("Spreadsheet 2017") Set Sht = wb1.Worksheets("Template") Set ws = wb2.Worksheets("January") Set Rng = ws.Range("B7:B" & Sht.Cells(Sht.Rows.Count, "B").End(xlUp).Row) For Each cell In Rng If cell.Offset(0, 2).Value = "1" Then Sht.Cells.Offset(0, 3).Value = "7.2" '<--- This is where I get the new error, "Application-defined or object-defined error" Sht.Cells.Offset(0, 2).Value = "3.9" Sht.Cells.Offset(0, 6).Value = "74.2" End If Next End Sub
非常感谢!
Sht.Cells
中的所有单元格,因此您无法在此上使用.Offset()
。
Sub Summary() Dim wb1 As Workbook Dim Sht As Worksheet Dim Rng As Range Dim wb2 As Workbook Dim cell As Range Dim ws As Worksheet Set wb1 = Workbooks("Works template.xlsm") Set wb2 = Workbooks("Spreadsheet 2017") Set Sht = wb1.Worksheets("Template") Set ws = wb2.Worksheets("January") Set Rng = ws.Range("B7:B" & Sht.Cells(Sht.Rows.Count, "B").End(xlUp).Row) For Each cell In Rng If cell.Offset(0, 1).Value = "1" Then sht.Range(cell.address).Offset(-2, 0).Offset(0, 0).Value = "7.2" sht.Range(cell.address).Offset(-2, 0).Offset(0, 1).Value = "3.9" sht.Range(cell.address).Offset(-2, 0).Offset(0, 2).Value = "74.2" End If Next End Sub