我有一个用于格式化列的现有宏。我一直在使用它没有问题。现在,我正在学习如何使用Option Explicit,我遇到了定义变量的问题。
我应该将Dim的水平视为什么?我尝试了Dim Level As String但是没有用。我正在努力获得更好的理解,所以任何反馈都会受到赞赏。
Option Explicit
Sub adviseformat()
Dim Form As Worksheet
Set Form = Sheets("Formatting")
With Form
Level = WorksheetFunction.Match("Level", .Rows("1:1"), 0)
.Columns(Level).Delete
.Columns("D:E").Delete
.Range("U:U").Value = Range("E:E").Value
.Columns("E").EntireColumn.Delete
.Columns("F:I").Delete
.Columns("I").Delete
.Columns("L").Delete
.Columns("M").Delete
Form.Range("A:B").EntireColumn.Insert
Form.Range("A1").Value = "Owner"
Form.Range("B1").Value = "Comment"
Form.Range("A1").Interior.Color = 65535
Form.Range("B1").Interior.Color = 65535
Form.Range("O1").Interior.Color = 65535
End With
End Sub
答案 0 :(得分:2)
当您键入WorksheetFunction.Match部件时,应弹出VBA编辑器并为您提供返回类型的线索。它应该说:
Match(Arg1, Arg2, [Arg3]) as Double
“As Double”部分告诉您Match功能的返回类型。这是您应该用来声明Level变量的类型。
答案 1 :(得分:0)
在MSDN上看,我发现了这个:
MATCH返回lookup_array中匹配值的位置,而不是值本身。
例如,MATCH(“b”,{“a”,“b”,“c”},0)返回2,“b”在数组{“a”,“b”中的相对位置, “C”}。
所以我的猜测是你应该使用Dim Level As Variant