在VBA插入公式内使用变量

时间:2016-05-27 14:58:40

标签: excel vba excel-vba excel-formula

解决方案感谢Chrismas007正在使用" CHR(34)"在公式。

我有这个代码,它插入一个从相邻单元格值中读取的公式,并决定放入单元格中的内容。例如。如果单元格的跟踪编号以" 93"然后我们知道它是一个" dhlglobalmail"包。

但是,如果将来发生变化,我需要让用户轻松更改这些值,这样我就可以在"设置"单元格范围内的工作表。

我试图仅为其中一个载体声明一个变量,作为一个名为" dhlcarriervalue"分配给另一个包含文本" dhlglobalmail"的工作表上的单元格范围。当我试图将变量放在子INTO公式中时,它不会起作用。我只是得到错误。我试过把"&"围绕它,双引号,单引号,它只是赢得了工作。我知道你需要在VBA公式中对字符串使用双引号,但这是一个变量而不是字符串。我尝试删除它们并且它不会工作。您可以看到其他数字有效,这只是字符串,但是当我尝试使用变量时,它不起作用。这不可能吗?我知道变量是正确的,因为我可以" msgbox"它就在那里。

Dim LastRowNum As Long
Dim dhlcarriervalue As String
dhlcarriervalue = ThisWorkbook.Sheets("Settings").Range("B41")
With Range("R2:" & "R" & LastRowNum)
.Value = "=IF(LEFT(s2,2)=""92"",""ups"",IF(LEFT(s2,2)=""93"","dhlcarriervalue",IF(LEFT(s2,2)=""94"",""usps"",IF(LEFT(s2,2)=""1Z"",""ups"",""Check Tracking""))))"
.Select
.Copy
.PasteSpecial xlPasteValues
End With
' I tried "" & dhlcarrier value & "" which didn't work either. 

1 个答案:

答案 0 :(得分:2)

我在整个代码中做了一些笔记:

Dim LastRowNum As Long '<Where is this defined???
Dim dhlcarriervalue As String

dhlcarriervalue = ThisWorkbook.Sheets("Settings").Range("B41").Value '.Value is default, but you should specify
With Sheets("NAME OF SHEET").Range("R2:" & "R" & LastRowNum) 'what Sheet specifically?
.Formula = "=IF(LEFT(s2,2)=""92"",""ups"",IF(LEFT(s2,2)=""93""," & Chr(34) & dhlcarriervalue & Chr(34) & ",IF(LEFT(s2,2)=""94"",""usps"",IF(LEFT(s2,2)=""1Z"",""ups"",""Check Tracking""))))"
'.Select 'Not needed since you specify the cell for .Copy
.Copy
.PasteSpecial xlPasteValues
End With