Joa*_*lai 1 excel vba excel-vba
我有一个函数,其中设置VBA常量如下:
Const KEY_TEXT As String = "mycystomtext"
Run Code Online (Sandbox Code Playgroud)
有没有办法以编程方式将VBA常数更改为其他文本?
我试图定义:
Const KEY_TEXT As String = Range("A1").value
Run Code Online (Sandbox Code Playgroud)
但这会导致错误。
小智 5
根据定义,常数不能在初始化后更改。在定义变量时必须对其进行初始化。
我正在回答我自己的问题,具体是:
有没有办法以编程方式将 VBA 常量更改为不同的文本?
Sub replace_run()
Dim s As String
Dim i As Long
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
With Application
.EnableEvents = False
.ScreenUpdating = False
.DisplayAlerts = False
End With
s = ThisWorkbook.Path
wcodestring = s & "\myfile.xlsm"
Workbooks.Open FileName:=wcodestring
Set wb_code = Application.Workbooks("myfile.xlsm")
Set VBProj_xl = Application.Workbooks("myfile.xlsm").VBProject
Set VBProj = wb_code.VBProject
Set VBComp = VBProj.VBComponents("Module1")
Set CodeMod = VBComp.CodeModule
With CodeMod
For i = 1 To .CountOfLines
If .Lines(i, 1) = "Const KEY_TEXT As String = " & Chr(34) & "mycystomtext" & Chr(34) Then
.ReplaceLine i, "Const KEY_TEXT As String = " & Chr(34) & "mycystomreplace" & Chr(34)
End If
Next i
End With
wb_code.Close SaveChanges:=True
Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)