我尝试了之前问题的所有建议,但没有成功,耗费了大量时间,但没有找到正确的解决方法。
当我尝试激活Workbook1(Work.xlsm)的“Sheet1”表时,如图所示,我得到一个运行时错误(即使没有拼写错误)。但它运行时没有其他工作簿(Book1.xlsx)的问题,用于将Excel工作表(LS)数据填充到UserForm组合框和文本框。
现在我的问题是当我点击“添加”按钮时,用户表单数据填充在工作簿(Book1.xlsx)excel表(LS)上,而我希望它填充在Workbook1(Work.xlsm)的“Sheet1”表上。
为此,我试图调用我的主要“Sheet1”工作簿1(Work.xlsm),但在尝试激活时收到错误。你能帮我解决一下这个问题。图像在这里:Error in this line; Run time error; From range A8 it should start populating(desired ouput in workbook1)
下面是我的组合框更改和命令按钮(ADD)的代码:
Private Sub cboLs_Change()
Dim i As Long, LastRow As Long, ws As Worksheet
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\Desktop\Book1.xlsx")
Set ws = wb.Worksheets("LS")
LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
If Val(Me.cboLs.Value) = ws.Cells(i, "A") Then
MsgBox Me.cboLs.Value
Me.txtProject = ws.Cells(i, "B").Value
End If
Next i
End Sub
Private Sub cmdadd_Click()
Dim i As Integer
Dim wb As Workbook
Dim ws1 As Worksheet
Set wb = Workbooks.Open("C:\Users\Desktop\Work.xlsm")
wb.Activate
Set ws1 = wb.Worksheets("Sheet1")
Worksheets("Sheet1").Activate
'position cursor in the correct cell A2.
ActiveSheet.Range("A8").Select
Do Until ActiveCell.Value = Empty
ActiveCell.Offset(1, 0).Select 'move down 1 row
i = i + 1 'keep a count of the ID for later use
Loop
'Populate the new data values into the 'Data' worksheet.
ActiveCell.Value = i 'Next ID number
'Populate the new data values into the 'Data' worksheet.
ws1.Range("A6").Value = e 'Next ID number
ws1.Range("B6").Value = Me.txtname.Text 'set col B
ws1.Range("C6").Value = Me.txtbook.Text 'set col C
ws1.Range("D6").Value = Me.cboLs.Text
End Sub
Private Sub UserForm_Initialize()
Dim i As Long, LastRow As Long, ws As Worksheet
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\Desktop\Book1.xlsx")
Set ws = wb.Worksheets("LS")
LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
Me.cboLs.AddItem ws.Cells(i, "A").Value
Next i
End Sub
非常简单:
Set ws1 = wb.Worksheets("Sheet1")
抛出Subscript out of Range
错误,因为文件“C:\ Users \ Desktop \ Work.xlsm”中没有包含名称“Sheet1”的工作表
您正在通过WorkSheet对象的Name
引用,这是小标签上显示的内容。对象很可能是VBA中对象资源管理器中的“Sheet1”:
Set ws1 = wb.Sheet1
Set ws1 = wb.Worksheets("Whatever is displayed on the little tab at the bottom of your screen")
有关如何参考表格的一些示例,请阅读this