对于我的生活,我无法弄清楚为什么以下代码抛出编译错误,并显示消息“无效的外部过程”。它突出显示下面的星号线上的错误。
Option Explicit
Dim shtThisSheet As Worksheets
**Set shtThisSheet = Application.Workbook("Formatting2.xlsm").Worksheets("Sheet1")**
Sub Formatting()
With shtThisSheet
With Range("A1")
.Font.Bold = True
.Font.Size = 14
.HorizontalAlignment = xlLeft
End With
With Range("A3:A6")
.Font.Bold = True
.Font.Italic = True
.Font.ColorIndex = 5
.InsertIndent 1
End With
With Range("B2:D2")
.Font.Bold = True
.Font.Italic = True
.Font.ColorIndex = 5
.HorizontalAlignment = xlRight
End With
With Range("B3:D6")
.Font.ColorIndex = 3
.NumberFormat = "$#,##0"
End With
End With
End Sub
答案 0 :(得分:8)
Set
语句。将Set
语句移至Formatting
过程:
Sub Formatting()
Set shtThisSheet = Application.Workbook("Formatting2.xlsm").Worksheets("Sheet1")
...
(我也会将Dim
语句移到程序中。我希望尽可能避免使用全局变量。)
答案 1 :(得分:0)
您可以将变量声明为全局变量,但不能在子过程或函数等过程之外设置变量。
如果您需要将此变量作为全局变量,则最好将其设置为开启。 Workbook_Open()
如果您不需要它作为全局,那么将声明和set语句移动到您的过程