我无法运行我的代码。请帮忙。我需要在同一工作簿中的不同工作表上调用不同单元格值的字符串。
Sub ll()
Dim result_range As Range
Dim tag, stime, filtexp, PIServer, boundarytype As String
Dim numvals, outcode As Integer
Dim pi_formula As String
tag = "Sheets(""Tags"").Range(""A2"")"
stime = "Sheets(""DATAEXTRACT"").Range(""A7"")"
numvals = 1
filtexp = "Sheets(""BatchConditions"").Range(""B23"")"
PIServer = "SGSitePI"
Mode = "inside"
'PINCompFilDat(tag, stime, numvals,filtexp,filtcode,outcode,PIServer ,mode)
pi_formula = "=PINCompFilDat(" & Chr(34) & tag & Chr(34) & "," & Chr(34) & stime & Chr(34) & "," & _
Chr(34) & numvals & Chr(34) & "," & Chr(34) & filtexp & Chr(34) & "," & Chr(34) & fitcode & Chr(34) & "," & _
CStr(outcode) & "," & _
Chr(34) & PIServer & Chr(34) & "," & _
Chr(34) & Mode & Chr(34) & ")"
Set result_range = Sheets("Sheet2").Range("A3:B3")
result_range.ClearContents
result_range.FormulaArray = pi_formula
result_range.CurrentRegion.Select
Selection.Columns(1).NumberFormat = "dd-mmm-yyyy hh:mm:ss"
result_range.Copy
result_range.PasteSpecial xlPasteValues
End Sub
答案 0 :(得分:1)
您无法从工作表函数访问Sheets
集合。您的pi_formula
变量设置为:
=PINCompFilDat("Sheets("Tags").Range("A2")", _
"Sheets("DATAEXTRACT").Range("A7")","1", _
"Sheets("BatchConditions").Range("B23")","",0,"SGSitePI","inside")
这不是函数的正确调用约定(甚至非常接近 - 感谢@Jeeped)。
有几个问题。首先,像这样的线......
Dim numvals, outcode As Integer
......不要做你期望的事。 必须输入在同一行上用逗号分隔的每个声明,否则它被视为Variant
。它应该是这样的:
Dim numvals As Integer, outcode As Integer
其次,您需要传递的是值,而不是范围。我假设tag
,stime
和filtexp
应该是Sheets("Tags").Range("A2")
,Sheets("DATAEXTRACT").Range("A7")
和Sheets("BatchConditions").Range("B23")
中的值。如果是这样,获取值,然后像在工作表上键入它一样构建函数(提示 - Debug.Print pi_formula
)。
第三,正如@Jeeped在评论中指出的那样,整数参数numvals
,filtexp
和outcode
不应该用引号括起来。
最后,你永远不会为fitcode
设置一个值(或声明它)。 Mode
也未声明。您可以通过在模块顶部键入Option Explicit
轻松捕获此类错误。
我最好的猜测是它应该是这样的:
Sub ll()
Dim result_range As Range
Dim tag As String, stime As String, filtexp As String
Dim PIServer As String, boundarytype As String
Dim numvals As Integer, outcode As Integer, fitcode As Integer
Dim pi_formula As String, Mode As String
tag = Sheets("Tags").Range("A2").Value
stime = Sheets("DATAEXTRACT").Range("A7").Value
numvals = 1
filtexp = Sheets("BatchConditions").Range("B23").Value
PIServer = "SGSitePI"
Mode = "inside"
'fitcode = something or other.
pi_formula = "=PINCompFilDat(" & Chr(34) & tag & Chr(34) & "," & Chr(34) & stime & Chr(34) & "," & _
numvals & "," & Chr(34) & filtexp & Chr(34) & "," & fitcode & "," & _
CStr(outcode) & "," & _
Chr(34) & PIServer & Chr(34) & "," & _
Chr(34) & Mode & Chr(34) & ")"
Set result_range = Sheets("Sheet2").Range("A3:B3")
result_range.ClearContents
result_range.FormulaArray = pi_formula
result_range.CurrentRegion.Select
Selection.columns(1).NumberFormat = "dd-mmm-yyyy hh:mm:ss"
result_range.Copy
result_range.PasteSpecial xlPasteValues
End Sub