Excel 2013 VBA为新工作簿创buildbutton

很长一段时间的用户,第一次海报!

我在校园食品架上工作,最近我非常忙于简化他们的报告和数据input。 目前我正在执行的任务是创build一个能够创build统一表单1的程序,这样我到目前为止build立的报表程序可以很容易地在gradle后很长时间内导出到新的工作簿中。 我对C / C ++,Python和最近的VBA很熟悉(但决不是专家)。

创build工作表1的button时出现错误。错误是:“光标下的标识符无法识别”。 我正在寻找这个代码的结果是创build5个独立的button链接到5个独立的子程序已被定义。 我想把它们放在特定尺寸的特定地方。 有问题的代码是:

Sub DONOTUSEbuttonMaker() Dim Report1, Report2, Report3, Unique, NewWork As Object Dim Targeter As Range Dim i As Integer For i = 1 To 5 Select Case i: Case 1: Set Targeter = Worksheets(1).Range(Cells(3, 7), Cells(3, 7)) Set Report1 = Worksheets(1).Buttons.Add(Targeter.Left, Targeter.Top, Width:=2, Height:=0.33) With Report1 .OnAction = "WeeklyReportsP1" .Caption = "Weekly Reports P1" .Name = "Weekly Reports P1" End With Case 2: Set Targeter = Worksheets(1).Range(Cells(5, 7), Cells(5, 7)) Set Report1 = Worksheets(1).Buttons.Add(Targeter.Left, Targeter.Top, Width:=2, Height:=0.33) With Report2 .OnAction = "WeeklyReportsP2" .Caption = "Weekly Reports P2" .Name = "Weekly Reports P2" End With Case 3: Set Targeter = Worksheets(1).Range(Cells(7, 7), Cells(7, 7)) Set Report1 = Worksheets(1).Buttons.Add(Targeter.Left, Targeter.Top, Width:=2, Height:=0.33) With Report3 .OnAction = "WeeklyReportsP3" .Caption = "Weekly Reports P3" .Name = "Weekly Reports P3" End With Case 4: Set Targeter = Worksheets(1).Range(Cells(9, 7), Cells(9, 7)) Set Report1 = Worksheets(1).Buttons.Add(Targeter.Left, Targeter.Top, Width:=2, Height:=0.33) With Unique .OnAction = "CalculateUnique" .Caption = "Calculate Unique" .Name = "Calculate Unique" End With Case 5: Set Targeter = Worksheets(1).Range(Cells(11, 7), Cells(11, 7)) Set Report1 = Worksheets(1).Buttons.Add(Targeter.Left, Targeter.Top, Width:=2, Height:=0.33) With NewWork .OnAction = "NewWeekWorkSheet" .Caption = "Create New Worksheet" .Name = "Create New Worksheet" End With End Select Next i End Sub 

案例2中的.OnAction行会生成错误。 对我来说,这也似乎很奇怪,因为它不会在案例1中发生错误…任何帮助将不胜感激!

从案例1复制粘贴后,似乎忘记将“Report1”更改为Report2,Report3等。(:

感谢您的所有意想不到的反馈! 它现在工作,这里是代码:

 Sub DONOTUSEbuttonMaker() Dim Report1, Report2, Report3, Unique, NewWork As Button Dim Targeter As Range Set Targeter = Worksheets(1).Cells(3, 7) Set Report1 = Worksheets(1).Buttons.Add(Targeter.Left, Targeter.Top, Width:=144, Height:=24) With Report1 .OnAction = "WeeklyReportsP1" .Caption = "Weekly Reports P1" .Name = "Weekly Reports P1" End With Set Targeter = Worksheets(1).Cells(5, 7) Set Report2 = Worksheets(1).Buttons.Add(Targeter.Left, Targeter.Top, Width:=144, Height:=24) With Report2 .OnAction = "WeeklyReportsP2" .Caption = "Weekly Reports P2" .Name = "Weekly Reports P2" End With Set Targeter = Worksheets(1).Cells(7, 7) Set Report3 = Worksheets(1).Buttons.Add(Targeter.Left, Targeter.Top, Width:=144, Height:=24) With Report3 .OnAction = "WeeklyReportsP3" .Caption = "Weekly Reports P3" .Name = "Weekly Reports P3" End With Set Targeter = Worksheets(1).Cells(9, 7) Set Unique = Worksheets(1).Buttons.Add(Targeter.Left, Targeter.Top, Width:=144, Height:=24) With Unique .OnAction = "CalculateUnique" .Caption = "Calculate Unique" .Name = "Calculate Unique" End With Set Targeter = Worksheets(1).Cells(11, 7) Set NewWork = Worksheets(1).Buttons.Add(Targeter.Left, Targeter.Top, Width:=144, Height:=24) With NewWork .OnAction = "NewWeekWorkSheet" .Caption = "Create New Worksheet" .Name = "Create New Worksheet" End With End Sub 

任何build议清理它,将不胜感激! 我很新的面向对象编程,并希望得到一些更好的编程实践的反馈! 再次感谢!