VBA如何在命令按钮上使用相同的代码,但更改了变量

时间:2013-03-25 12:38:55

标签: 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

现在虽然我希望复制并粘贴其他主题的命令按钮。现在我可以通过每次为每个按钮更改我用*标记的数字来轻松完成此操作,但我想知道是否有一种方法可以做到这一点,但是制作那些*数字变量,只需要一次,然后为每个主题只需要更改这些变量,而不必多次复制和粘贴整个代码。

据我所知,我不是很清楚对不起:(但任何帮助都会非常感激。

感谢。

1 个答案:

答案 0 :(得分:3)

而不是将所有代码放在按钮单击事件上,而是有一个单独的子元素,它接受您想要更改的元素的参数。因此,而不是第一行:

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