如果你这样做
someCell.Value = someOtherCell.Value
和someOtherCell.Value
是"product"
然后someCell
不会被填满你保存在变量product
但"product"
(我包括引号,以强调这是它的一个串)。这是一件好事,因为如果你不小心在你的代码中加入了一些随机变量的名字,它会混淆你的代码。
如果你的要求是这样的:
你有你下面写产品等的行中编写产品等值
的标题并不总是以相同的顺序。
您可能想稍后添加新的变量,而不会大惊小怪。
他们某种键控列表可能是你要找的。这意味着您可以使用名称来引用它们,而不是通过数字索引来引用变量。
如果订单是固定的,那么最好使用一个数组,其中第1项是产品名称,第2项是组号等,如ja72和Sgdva建议。
但是,如果你仍然想通过名称来引用变量,你可以使用一个集合:
Dim coll As New Collection
With coll
.Add "corp", "product"
.Add 1, "group"
.Add 1, "recordno"
'...
End With
然后,而不是选择单元格和引用ActiveCell
你应该直接(引用单元格使用选择和ActiveCell可以可避免大部分的时间和减慢宏,甚至可能会导致不必要的错误)
For i = 1 To 5
Cells(2, i).value = coll(Cells(1, i).value)
Next i
到集合的替代方案是一本字典它提供了一种简单的方法来检查,如果存在键(与交流ollection你必须赶上错误)
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
With dict
.Add "product", "corp"
.Add "group", 1
.Add "recordno", 1
'...
End With
现在你可以检查第一项存在,所以它不会引发错误:
For i = 1 To 5
If dict.Exists(LCase(Cells(1, i).value)) Then 'note that the dictionary keys are case sensitive
Cells(2, i).value = dict(LCase(Cells(1, i).value))
Else
MsgBox "Entry for " & LCase(Cells(1, i).value) & " not found!"
End If
Next i
注意,当您使用dict("somekey")
和进入"somekey"
不存在,它不会抛出错误,但添加一个空条目。
我不知道你想要做什么 - 你永远不引用该变量。您选择列A并将其设置为自己,因此它是PRODUCT。您需要参考产品' – Raystafarian
您知道'Dir'将尝试在您的文件系统上通过该名称查找文件或文件夹吗?你想做什么? –
VBA变量不区分大小写。你能尝试解释你想要做什么吗? – Raystafarian