我在互联网上搜索了几天,但我仍然找不到出路。如果我能从你们这里获得一些提示,我将非常感激。以下是我将要做的细节:
我有一个名为A的只读工作簿,上面有一个按钮1。通过单击按钮1,将弹出包含列表框的用户表单和带宏的按钮2。结果将打印在工作簿A的表2中。
我想要做的是,使用另一个工作簿B,调用VBA脚本打开工作簿A并单击按钮1以激活用户窗体。然后,选择所有行并单击按钮2运行宏。最后,将工作表B上的值复制到工作簿B.
为了简化问题,我写了一些代码来说明这个案例。
在练习册A上: 按钮1:
Public Sub Button1_Click()
UserForm1.Show
End Sub
按钮2:
Private Sub Button2_Click()
Dim y As Long, z As Long
z = 1
With Me.ListBox1
For y = 0 To .ListCount
On Error GoTo EH
If .Selected(y) = True Then
For i = 1 To ListBox1.ColumnCount
Sheets("Sheet2").Cells(z, i) = .List(y, i - 1)
Next i
z = z + 1
End If
Next y
End With
Unload Me
End
EH:
Unload Me
End Sub
用户窗体:
Private Sub UserForm_Initialize()
ListBox1.Clear
With ListBox1
ListBox1.ColumnCount = 3
ListBox1.ColumnWidths = "60;60;60"
.AddItem
.List(0, 0) = 1
.List(0, 1) = 2
.List(0, 2) = 3
.AddItem
.List(1, 0) = 4
.List(1, 1) = 5
.List(1, 2) = 6
End With
End Sub
在练习册B上,我执行以下操作:
Sub selectsheet()
Application.Run Workbooks("WorksbookA").Worksheets("sheet1").Shapes("Button1").OnAction
ListBox1.Selected(1) = True
UserForm1.Button2_click
Worksheets("sheet2").range("A1:B3").copy
Workbooks("WorksbookB").Worksheets("sheet1").range("A1").select
selection.paste
End Sub
vba看起来很好,因为我可以运行它。但它坚持Application.Run。对不起,我不擅长编程,也解释这些杂乱的东西。但是,如果你们中的任何人能够帮助我,我将非常感激。感谢。