我是VBA的新手,并创建了一个带3个命令按钮的多页面用户窗体,其中一个是将页面中的数据添加到xl中的一个表单中。当我第一次完成它时,它工作得非常好,所以我保存了所有内容,关闭了工作簿,当我重新打开它时,add命令按钮不起作用。我又重新开始了整个项目,又一次发生了同样的事情。用户表单中的命令按钮停止工作
任何人都可以请指教?现在我已经花了两天时间试图解决这个
的代码是:
Private Sub cmdAdd_Click()
Dim addme As Range
Dim s As Integer
Dim t As Integer
Dim u As Integer
Dim v As Integer
Set addme = Sheet1.Cells(Rows.Count, 3).End(xlUp).Offset(1, 0)
For s = 0 To Me.ListRegularOrder.ListCount - 1
If Me.ListRegularOrder.Selected(s) Then
addme = Me.ListRegularOrder.List(s)
addme.Offset(0, 1) = Me.ListRegularOrder.List(s, 1)
addme.Offset(0, 2) = Me.ListRegularOrder.List(s, 2)
addme.Offset(0, 3) = Me.ListRegularOrder.List(s, 3)
addme.Offset(0, 4) = Me.ListRegularOrder.List(s, 4)
addme.Offset(0, 5) = Me.ListRegularOrder.List(s, 5)
addme.Offset(0, 6) = Me.ListRegularOrder.List(s, 6)
addme.Offset(0, 7) = Me.ListRegularOrder.List(s, 7)
addme.Offset(0, 8) = Me.ListRegularOrder.List(s, 8)
addme.Offset(0, 9) = Me.ListRegularOrder.List(s, 9)
addme.Offset(0, 10) = Me.ListRegularOrder.List(s, 10)
addme.Offset(0, 11) = Me.ListRegularOrder.List(s, 11)
addme.Offset(0, 12) = Me.ListRegularOrder.List(s, 12)
addme.Offset(0, 13) = Me.ListRegularOrder.List(s, 13)
addme.Offset(0, 14) = Me.ListRegularOrder.List(s, 14)
addme.Offset(0, 15) = Me.ListRegularOrder.List(s, 15)
addme.Offset(0, 16) = Me.ListRegularOrder.List(s, 16)
Set addme = addme.Offset(1, 0)
End If
Next s
For s = 0 To Me.ListRegularOrder.ListCount - 1
If Me.ListRegularOrder.Selected(s) Then Me.ListRegularOrder.Selected(s) = False
Next s
For t = 0 To Me.ListLastOrder.ListCount - 1
If Me.ListLastOrder.Selected(t) Then
addme = Me.ListLastOrder.List(t)
addme.Offset(0, 1) = Me.ListLastOrder.List(t, 1)
addme.Offset(0, 2) = Me.ListLastOrder.List(t, 2)
addme.Offset(0, 3) = Me.ListLastOrder.List(t, 3)
addme.Offset(0, 4) = Me.ListLastOrder.List(t, 4)
addme.Offset(0, 5) = Me.ListLastOrder.List(t, 5)
addme.Offset(0, 6) = Me.ListLastOrder.List(t, 6)
addme.Offset(0, 7) = Me.ListLastOrder.List(t, 7)
addme.Offset(0, 8) = Me.ListLastOrder.List(t, 8)
addme.Offset(0, 9) = Me.ListLastOrder.List(t, 9)
Set addme = addme.Offset(1, 0)
End If
Next t
For t = 0 To Me.ListLastOrder.ListCount - 1
If Me.ListLastOrder.Selected(t) Then Me.ListLastOrder.Selected(t) = False
Next t
For u = 0 To Me.ListHistory.ListCount - 1
If Me.ListHistory.Selected(u) Then
addme = Me.ListHistory.List(u)
addme.Offset(0, 1) = Me.ListHistory.List(u, 1)
addme.Offset(0, 2) = Me.ListHistory.List(u, 2)
addme.Offset(0, 3) = Me.ListHistory.List(u, 3)
addme.Offset(0, 4) = Me.ListHistory.List(u, 4)
addme.Offset(0, 5) = Me.ListHistory.List(u, 5)
addme.Offset(0, 6) = Me.ListHistory.List(u, 6)
addme.Offset(0, 7) = Me.ListHistory.List(u, 7)
addme.Offset(0, 8) = Me.ListHistory.List(u, 8)
addme.Offset(0, 9) = Me.ListHistory.List(u, 9)
Set addme = addme.Offset(1, 0)
End If
Next u
For u = 0 To Me.ListHistory.ListCount - 1
If Me.ListHistory.Selected(u) Then Me.ListHistory.Selected(u) = False
Next u
For v = 0 To Me.ListPriceList.ListCount - 1
If Me.ListPriceList.Selected(v) Then
addme = Me.ListPriceList.List(v)
addme.Offset(0, 1) = Me.ListPriceList.List(v, 1)
addme.Offset(0, 2) = Me.ListPriceList.List(v, 2)
addme.Offset(0, 3) = Me.ListPriceList.List(v, 3)
addme.Offset(0, 4) = Me.ListPriceList.List(v, 4)
addme.Offset(0, 5) = Me.ListPriceList.List(v, 5)
addme.Offset(0, 6) = Me.ListPriceList.List(v, 6)
addme.Offset(0, 7) = Me.ListPriceList.List(v, 7)
addme.Offset(0, 8) = Me.ListPriceList.List(v, 8)
addme.Offset(0, 9) = Me.ListPriceList.List(v, 9)
addme.Offset(0, 10) = Me.ListPriceList.List(v, 10)
addme.Offset(0, 11) = Me.ListPriceList.List(v, 11)
addme.Offset(0, 12) = Me.ListPriceList.List(v, 12)
addme.Offset(0, 13) = Me.ListPriceList.List(v, 13)
addme.Offset(0, 14) = Me.ListPriceList.List(v, 14)
addme.Offset(0, 15) = Me.ListPriceList.List(v, 15)
Set addme = addme.Offset(1, 0)
End If
Next v
For v = 0 To Me.ListPriceList.ListCount - 1
If Me.ListPriceList.Selected(v) Then Me.ListPriceList.Selected(v) = False
Next v
End Sub
非常感谢/史蒂夫
你能说清楚你的意思是行不通的吗?是否抛出错误? – Gareth
这看起来可能太明显了,但是当你保存它时,你是否保存为Excel工作簿(例如XLSX)? XLSX不能包含代码,并且您需要代码才能使其工作。如果是这种情况,请将其保存为启用宏的工作簿(XLSM)或二进制工作簿(XLSB)。顺便说一句,如果你这样做了,你应该收到一个警告,说明保存为XLSX会从工作簿中剥离代码。 – Jeeped
嗨Gareth,感谢您回复 – Steve