如何通过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