Option Explicit - 不确定如何调暗它

时间:2015-06-10 13:46:40

标签: excel vba

我有一个用于格式化列的现有宏。我一直在使用它没有问题。现在,我正在学习如何使用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

2 个答案:

答案 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