Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让ExecuteExcel4Macro识别空单元格_Excel_Vba_Macos - Fatal编程技术网

让ExecuteExcel4Macro识别空单元格

让ExecuteExcel4Macro识别空单元格,excel,vba,macos,Excel,Vba,Macos,当我在VBA脚本中使用ExecuteExcel4Macro函数时,如下所示: Public Function GetNamedData(Path, File, Address) Dim Data As String Data = "'" & Path & File & "'!" & Address GetNamedData = ExecuteExcel4Macro(Data) End Function 其中,Address在我的例子中是一个命名范

当我在VBA脚本中使用ExecuteExcel4Macro函数时,如下所示:

Public Function GetNamedData(Path, File, Address)
  Dim Data As String
  Data = "'" & Path & File & "'!" & Address
  GetNamedData = ExecuteExcel4Macro(Data)  
End Function
其中,
Address
在我的例子中是一个命名范围,如果关闭的工作簿中的单元格为空,则此函数返回0。但有些单元格(故意)包含0

如何区分空单元格和包含0的单元格

为了进一步解释,我使用此函数从关闭的工作簿中获取数据。事实证明,这在从封闭的工作簿中收集大量数据方面非常快

我知道“0”和“empty”之间存在差异,但我不确定如何将其应用到该函数中。

试试这个:

GetNamedData = ExecuteExcel4Macro("IF(COUNTA(" & Data & ")," & Data & ",""X"")")
如果关闭的工作簿中的单元格为空,则返回GetNamedData=“X”。

下面的函数在值中添加一个“”(Null),因此GetValue2函数如果为空则返回Null,如果为零则返回零

Function GetValue2(strPath As String, strFilename As String, strTabName As String, intColumnNumber As Integer, intRowNumber As Integer) As String
  Dim varCellValue As Variant
  Dim strContents As String

  On Error GoTo ErrHandler

  varCellValue = ExecuteExcel4Macro("'" & strPath & "[" & strFilename & "]" & strTabName & "'!R" & intRowNumber & "C" & intColumnNumber & " & """"")
  strContents = CStr(varCellValue)
  GoTo NiceExit
ErrHandler:
  Call MsgBox("strPathFilename : " & strPath & strFilename & Chr(13) & _
           "strTabName      : " & strTabName & Chr(13) & _
           "intColumnNumber : " & intColumnNumber & Chr(13) & _
    "") ' & Error.msg, vbOKOnly)
NiceExit:
  GetValue2 = strContents
End Function

@谢谢你的帮助。我已经尝试过研究,但找不到什么有用的东西,所以我现在在这里发问。@我正在使用ExecuteExcel4Macro从一个关闭的工作簿中获取数据(不打开它)。我最近才了解这个功能,它让我的数据检索速度更快。如果有更好的方法,请一定要让我知道。@Jeeped谢谢你的意见。不过,我还是没有接通。我理解你所说的ExecuteExcel4Macro是如何工作的……但是如果它返回的都是“0”,我怎么知道它实际上是一个“0”还是一个空单元格,因为它们都会产生相同的结果?@Peh看起来被截取的注释消失了?varCellValue=ExecuteExcel4Macro(“”&strPath&[“&strFilename&]”和strabName&“!R”&IntrownNumber&“C”&intColumnNumber&“和”)