Excel 选项显式-不确定如何使其变暗

Excel 选项显式-不确定如何使其变暗,excel,vba,Excel,Vba,我有一个用于格式化列的现有宏。我一直在使用它,没有任何问题。现在,我想学习如何使用Option Explicit,我在定义变量时遇到了一个问题 我应该将级别设置为什么?我试着用Dim Level作为字符串,但不起作用。我正在努力获得更好的理解,因此任何反馈都将不胜感激 Option Explicit Sub adviseformat() Dim Form As Worksheet Set Form = Sheets("Formatting") With Form Level = Work

我有一个用于格式化列的现有宏。我一直在使用它,没有任何问题。现在,我想学习如何使用Option Explicit,我在定义变量时遇到了一个问题

我应该将级别设置为什么?我试着用Dim Level作为字符串,但不起作用。我正在努力获得更好的理解,因此任何反馈都将不胜感激

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
看着,我发现:

MATCH返回匹配值在lookup_数组中的位置,而不是值本身

例如,MATCH(“b”,“a”,“b”,“c”},0)返回2,即数组{“a”,“b”,“c”}中“b”的相对位置


因此,我的猜测是,当您键入WorksheetFunction.Match部分时,应该使用
Dim Level作为变量,VBA编辑器应该弹出并为您提供返回类型的线索。应该这样说:

Match(Arg1, Arg2, [Arg3]) as Double

“As Double”部分告诉您Match函数的返回类型。这是您应该用来声明级别变量的类型。

IIRC,它是一个范围。。。不过你应该在上面使用Set。请尝试一个变量,它应该可以工作。@rbaryYoung:它不是一个范围,而是一个数组:我尝试了Dim Level作为变量,但得到了“运行时错误'1004':应用程序定义或对象定义错误”@bonCodigo-我出错了
Level=WorksheetFunction.Match(“Level”),.Rows(“1:1”),0
@R3uK您是正确的,但它不是一个范围,您链接到的文档还说它也不是数组,而是一个
双精度
。嘿,R3uk,我尝试将Dim级别作为变量,但在
级别=…
行上出现运行时错误“1004”?嗨,凯文,感谢您的响应。我刚刚尝试将Level设置为Double,但仍然得到“运行时错误'1004'”Double是正确的数据类型。错误1004与您正在设置的数据类型完全无关。检查有关错误1004的文档。Keven,bonCodigo,R3uk我发现了问题。Keven是对的,Double是这里使用的正确变量。我收到的1004错误是由于数据集中的标题不正确造成的。谢谢大家!@xslyx,发布它,以便帮助未来的访问者。