VBA Excel - 在范围中执行命令 - 与其他工作簿交互

时间:2016-03-29 05:01:56

标签: excel vba vbe

我一直在尝试如何解决这个问题。我锁定了我的vba项目,因为我不希望大多数人能够更改代码。问题是,我有基于用户输入修改其他模块的代码,这显然会导致问题,如果模块被锁定,则无法修改模块。由于我不做'sendkeys'(lol c'mon),没有实用的解锁方法,所以我可以修改代码。

所以我创建了一个.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 - 和/或关于如何直接从工作表执行代码的想法,从而一起绕过头痛?

0 个答案:

没有答案