VBA, как мне получить тот же код на командной кнопке, но с измененными переменными

совершенно новый для VBA (и кодирования на самом деле) и начался сегодня, поэтому я могу представить, что эта проблема имеет относительно простое решение.

Я хочу создать регистратор версий для нескольких тем, и код только для 1 темы отлично работает. Вот что у меня есть. (я не могу вставлять картинки, поэтому вот ссылка.)

http://i.imgur.com/Up2Pf8r.png

вот код командной кнопки (notr обозначает количество пересмотров)

Private Sub revision_Click()

Dim check As String

If revision.Caption = "StartRevision" Then
revision.Caption = "EndRevision"
Else
revision.Caption = "StartRevision"
End If

Dim column As Integer
Dim notr As Integer

notr = Cells(*2*, 5).Value
column = notr + 6


If revision.Caption = "StartRevision" Then
Cells(*3*, column).Value = Now
Cells(*3*, column).NumberFormat = "dd/mm/yyyy hh:mm:ss"
Cells(*4*, column).Value = Abs((Cells(2, column)) - (Cells(3, column)))
Cells(*4*, column).NumberFormat = "hh:mm:ss"
Else
Cells(*2*, column).Value = Now
Cells(*2*, column).NumberFormat = "dd/mm/yyyy hh:mm:ss"
End If


If revision.Caption = "StartRevision" Then
notr = notr + 1
Cells(*2*, 5).Value = notr
End If


End Sub

теперь, хотя я хочу скопировать и вставить эту командную кнопку для других предметов. Теперь я могу сделать это легко, изменяя числа, которые я пометил * каждый раз для каждой кнопки, но мне было интересно, есть ли способ сделать это, но сделать эти * числа переменными и просто иметь этот код один раз, а затем для каждой субъекту просто нужно изменить эти переменные вместо того, чтобы много раз копировать и вставлять весь код.

Я понимаю, что я не очень ясен, поэтому извините :( но любая помощь будет очень признательна.

Спасибо.


vba
person Hugh Kinnear    schedule 25.03.2013    source источник
comment
я не могу просто повторить код для каждой кнопки, он отлично работает. Я просто спрашиваю, есть ли способ сделать это, чтобы мне не приходилось повторять код, и я мог просто сделать эти * переменные, а затем для каждой кнопки просто иметь список, какие числа для определенного предмета должны быть.   -  person Hugh Kinnear    schedule 25.03.2013


Ответы (1)


Вместо того, чтобы помещать весь ваш код в событие нажатия кнопки, создайте отдельный подраздел, который принимает параметры для элементов, которые вы хотите изменить. Итак, вместо первой строки:

Private Sub revision_Click()

Использовать это:

Private Sub revision(MyVar As Long)

Затем замените части вашего кода, которые вы хотите изменить, с помощью MyVar, это потребует небольшой доработки, чтобы получить нужные номера ячеек из одного номера. Затем для каждой кнопки используйте такой код:

Private Sub Button1_Click()
  revision 1
End Sub

Private Sub Button2_Click()
  revision 2
End Sub
person Dave Sexton    schedule 25.03.2013
comment
большое спасибо, я не думал, что кто-нибудь поймет, о чем я говорил в своем посте, так как это так неясно XD. это именно то, что я хотел. - person Hugh Kinnear; 25.03.2013