【发布时间】:2019-06-15 03:56:34
【问题描述】:
:) 我是 VBA 新手! 我有一个工作代码,用于在使用复选框(ActiveX)时在我有书签的地方插入日期。问题是我有 33 个复选框(我实际上希望 33x2。一个代表是,一个代表否)。所以我最终得到了 33 个订阅和 33 个书签。我敢打赌,这段代码可以更有效地将其减少到几个潜艇。任何人都知道是否可以做到吗? 下面的代码是 33 个重复 subs 中的第一个,其中 Sub 和书签名称是 agi1, agi2 agi3.....
Private Sub agi1_Click()
Dim rngFormat As Range
Set rngFormat = ActiveDocument.Range( _
Start:=ActiveDocument.Bookmarks("agi1").Range.Start, _
End:=ActiveDocument.Bookmarks("agi1").Range.End)
With rngFormat
.Font.Size = 8
End With
Dim v
Dim BMRange As Range
v = ThisDocument.agi1.Value
'Sjekke om boks er sjekket eller ikke
If v = True Then
'Sett inn dato i bokmerke
Set BMRange = ActiveDocument.Bookmarks("agi1").Range
With Selection.Font
.Size = 9
End With
BMRange.Text = (Format(Date, "dd.mm.yyyy"))
Else
'Erstatte dato med tom tekst hvis boks ikke er sjekket
Set BMRange = ActiveDocument.Bookmarks("agi1").Range
BMRange.Text = " "
End If
'Sett inn bokmerke på nytt
ActiveDocument.Bookmarks.Add "agi1", BMRange
End Sub
【问题讨论】:
-
除了书签等之外,代码是否相同?有事件下沉,如果您的按钮名称与书签一致,我相信
application.caller会有所帮助。 -
是的。唯一的区别是复选框和书签的名称(我使用相同的名称)。每个复选框一个书签。谢谢,我会“检查一下”。 :)