Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
如何通过VBA代码使Excel单元格等于空_Vba_Excel - Fatal编程技术网

如何通过VBA代码使Excel单元格等于空

如何通过VBA代码使Excel单元格等于空,vba,excel,Vba,Excel,当然,您将用前面提到的单元格中要编写的=”公式来回答这个问题,但这不是我的情况 事实上,我有一个函数,只有当它的参数等于一个空单元格时,它才起作用,也就是说,在它上面按del或诸如此类的按钮,一个被完全擦除的单元格 显然,我不能简单地删除单元格的内容,因为它从外部源获取数据,有时我需要该单元格的内容在我的电子表格中显示 当前单元格的公式类似于 =if([condition], "", [formula]) 但是,如果单元格的值等于”,而不是简单地为空,则函数将不再工作(相反,如果内容等于[公式

当然,您将用前面提到的单元格中要编写的
=”
公式来回答这个问题,但这不是我的情况

事实上,我有一个函数,只有当它的参数等于一个空单元格时,它才起作用,也就是说,在它上面按del或诸如此类的按钮,一个被完全擦除的单元格

显然,我不能简单地删除单元格的内容,因为它从外部源获取数据,有时我需要该单元格的内容在我的电子表格中显示

当前单元格的公式类似于

=if([condition], "", [formula])
但是,如果单元格的值等于
,而不是简单地为空,则函数将不再工作(相反,如果内容等于
[公式]
,则该函数可以正常工作)

无法修改该函数,但我可以编写额外的VBA代码来实现该结果

根据Daniel Cook发布我的代码的请求,以下是来自QuantLibXL函数的公式:

=qlFloatingRateBond(,,"EUR",3,,,"obj_0005#007",2,,"Actual/365",,,"obj_0004#008",,,,,,,)
如果你在

=qlFloatingRateBond(,,"EUR",3,,,"obj_0005#007",2,,"Actual/365",0,,"obj_0004#008",,,,,,,)

由于提供了错误的参数(修改涉及
Floors
参数,我希望没有对逗号和空的默认参数做任何错误…)而导致对象处理程序错误


要使其在没有楼层的情况下管理绑定,唯一的方法是为其提供一个真正的空单元格,但如果您有一个外部数据源,该数据源根据楼层的存在与否在该单元格中返回一些值,则无法使其工作。

坏消息:您不能。一旦单元格包含公式,它就永远不会处于真正的空白状态


例如,将单元格设置为=A1,您会看到该单元格中将出现0;即使A1本身为空。

这可能无法解决您的问题,因为我没有QuantLibXL,但如果您想删除工作表中计算为“”的所有单元格,您可以尝试:

sheet.UsedRange.SpecialCells(xlCellTypeFormulas, 2).Select
Selection.ClearContents
这将查找生成文本的所有公式,然后删除它们。注意:如果没有,这可能会失败,也可能过于激进

另一个技巧是将公式更改为:

=if([condition], NA(), [formula])
现在,这些值不是空单元格,而是一个错误(#N/A)。可能库理解的是错误,而不是0或“”的值

如果要删除工作表中的所有错误,则需要修改上面的VBA代码以查找导致错误的所有公式:

sheet.UsedRange.SpecialCells(xlCellTypeFormulas, 16).Select
Selection.ClearContents
同样,如果没有,这将是一个错误


这不是最好的答案,但也许值得思考。

你有没有机会分享你不能改变的功能?甚至可能是它的签名?没有这一点,我怀疑会有任何有用的答案。是的,它来自[(QuantLibXL),就是这个:[真正的函数是用C++编写的,这就是我知道的所有东西。这里有一个更好的方法链接到这个方法:你怎么调用这个方法?给我们看看你的代码。是的,就是那个。抱歉我使用了这样的格式化:)@丹尼尔库克代码。
sheet.UsedRange.SpecialCells(xlCellTypeFormulas, 16).Select
Selection.ClearContents