【发布时间】:2016-01-07 02:00:45
【问题描述】:
我正在使用 VBA 来帮助管理一组数据。我将拥有 50 个月的月度数据,我希望根据单元格中的第一个单词将其分类到不同的工作表中。这是我到目前为止所做的;
我创建了一个有 2 张工作表的工作簿,
- Sheet1(员工库存)
- 表 2(PB)
我的代码已编写并保存在此工作簿中。
Sub myCode()
Dim OldString As String
Dim NewString As String
Set i = Sheets("Employee Inventory")
Set PB = Sheets("PB")
Dim counterPB
counterPB = 2
Dim d
Dim j
d = 1
j = 2
Do Until IsEmpty(i.Range("D" & j))
OldString = i.Range("D" & j)
NewString = Left(OldString, 2)
If NewString = "PB" Then
i.Rows(j).EntireRow.Copy
PB.Range("A" & counterPB).Select
PB.Paste
counterPB = counterPB + 1
End If
j = j + 1
Loop
End Sub
为代码道歉,因为它看起来很奇怪。此代码查看 Sheet1 并扫描列“D”并查找以“PB”开头的第一个单词。一旦找到它,它会将整行复制并粘贴到另一个名为 Sheet2(PB) 的工作表中。
当我在 Microsoft Visual Basic 窗口中并且打开了带有 Sheet1(Employee Inventory) 选项卡的 Excel 电子表格时,当我单击 Run Sub 时,我收到以下错误:运行时错误“1004”:应用程序定义或对象-定义的错误。当我单击“PB”选项卡时,没有任何内容被复制和粘贴在那里。
但是,当我单击 PB 选项卡,然后单击 Run Sub 时,代码会执行,并且包含第一个单词“PB”的任何行都将被复制并粘贴到“PB”选项卡中。
我的问题是,为什么它只在我打开 Sheet2 时才起作用,而在我打开 Sheet1 时不起作用?
【问题讨论】: