我正在尝试在运行时更改工作表,所以我在VBA中编写了此代码:
Dim Item As Variant
Dim Info As Variant
Dim Stat As Integer
Stat = 2
Dim Line As Integer
Line = 1
Item = "Cases"
Sheets(Item).Activate
Do
Line = Line + 1
Loop While Cells(Line, "B") <> Null
Do
Info = Cells(1, Stat)
Info = InputBox("what is the item " & Info & "?")
Cells(Line, Stat) = Info
Loop While Cells(1, Stat) <> Null
激活功能确实像我想要的那样打开了名为“案例”的工作表,但是当该部分运行“ Info = Cells(1,Stat)”时,即使我看到“案例”,它仍会从上一个工作表中获取信息。工作表。
[我查看了我编写的另一个vba代码,该代码使用相同的方法,该代码在那儿工作,但是我找不到在那里做的任何其他事情可以使它在那儿工作,而在这里丢失了。
将工作表放到其自己的局部变量中,您不需要Activate
任何东西(如果您有Workbook
对象,请使用它代替ActiveWorkbook
来限定Worksheets
的调用权限。
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets("Cases")
现在无需循环就获得最后/下一行:
Dim line As Long
line = ws.Range("B" & ws.Rows.Count).End(xlUp).Row + 1
现在,您的循环条件将不起作用,因为Excel中的任何内容都不会是Null
。而是查找Empty
单元格,然后使用ws
变量限定每个单个Cells
成员调用:
Do
Info = ws.Cells(1, Stat).Value
Info = InputBox("what is the item " & Info & "?")
ws.Cells(Line, Stat).Value = Info
Loop While Not IsEmpty(ws.Cells(1, Stat).Value)