Долгосрочный пользователь, первый раз постер!Excel 2013 VBA Создание кнопок для новой рабочей книги
Я работаю на продовольственном шельфе Campus, и я недавно очень активно участвовал в упорядочении их отчетности и ввода данных. Задача, которую я сейчас выполняю, заключается в создании программы, которая создала единый лист 1, так что программы отчетности, которые я создал до сих пор, могут быть легко экспортированы в новые книги, вскоре после окончания учебы. Я знаком (но далеко не экспертом) с C/C++, Python и совсем недавно VBA.
У меня возникла ошибка при создании кнопок для листа 1. Ошибка: «Идентификатор под курсором не распознается». Результат, который я ищу с помощью этого кода, состоит в том, чтобы создать 5 отдельных кнопок, связанных с 5 отдельными Sub-программами, которые уже определены. Я хотел бы разместить их в определенных местах с определенными размерами. Код, указанный в тексте:
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 ... Любая помощь будет принята с благодарностью!
Если вы пройдете через nd skip Case 2 и продолжить, пока он не пройдет через Case 3, там тоже ошибка? – mrbungle
В настоящее время кажется, что вы не создаете кнопку Report2 в случае 2, а скорее Report1. Когда вы затем вызываете .OnAction, он указывает на Report2, который еще не установлен. То же самое относится к другим случаям. –
Имея взгляд на ваш код, похоже, что ваши кнопки будут _really_ слишком малы, хотя я думаю, что это то, что вы можете исправить позже. Я также принимаю решение о том, как вы объявляете свой диапазон таргетинга. Возможно, просто установите его в 'Worksheets (1) .Cells (3,7)'. – eirikdaude