我一直在尝试如何解决这个问题。我锁定了我的 vba 项目,因为我不希望大多数人能够更改代码。问题是,我有根据用户输入修改其他模块的代码,这显然会导致问题,因为如果模块被锁定,您将无法修改它。因为我只是不做'sendkeys'(哈哈,来吧),没有实用的方法来解锁它,所以我可以修改代码。
所以我创建了一个 .xlam 加载项。模块将新代码写入文件,将其保存为 .bas 类型,然后加载项导入并运行它。
但...
我在与工作簿(为 .xlam 加载项生成模块的工作簿)交互时遇到问题。以下是我发现棘手的代码部分。它主要与使用所述工作簿执行自动填充和更新表单有关。
public sub wbUpdate()
Dim wb as workbook
Set wb = workbooks("WB.xlsm")
Dim lastRow as long
'======example #1====== not sure my autofill syntax is right:
Worksheets("Sheet1").Select
lastRow = wb.worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).row
k = lastRow
wb.worksheets("Sheet1").Range("B2").Select
wb.worksheets("Sheet1").Range("B2").value = ""
'below is where I get a runtime error, not sure why
wb.worksheets("sheet1").Range("B2").AutoFill _
Destination:=wb.worksheets("Sheet1").Range("B2:B" & lastRow)
'======Example #2====== Try to show a userForm and center
'but can't seem to get the syntax right
With wb.progressBar '<== runtime error on @ this line
.StartUpPosition = 0
.Left = Application.Left + (0.5 * Application.Width) - (0.5 * .Width)
.Top = Application.Top + (0.5 * Application.Height) - (0.5 * .Height)
.Show
End With
End Sub
这些是首要问题。就个人而言,我宁愿直接从工作表中运行代码(换句话说,考虑一个模块执行 Range("A1") 中的内容 - 比如 "msgbox someString"),但我不确定这是否可能。想知道这个很久了
关于语法应该是什么的任何指针,例如 #1 和 #2 - 和/或关于如何直接从工作表执行代码的想法,从而一起绕过头痛?