vba如果值在特定范围内> 0,则将公式转换为值
一个问题:我试图将一个特定范围内的公式转换为其值,一旦该公式的值大于0 vba。 我发现将整个工作簿转换为价值的一些结果,但没有比这更详细。
Sub ConvertCellsToValues() ActiveSheet.Cells.Copy ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues End Sub
说问题的范围是A1到A10。
将下面的事件macros放在工作表代码区域中:
Private Sub Worksheet_Calculate() Dim A As Range, r As Range Set A = Range("A1:A10") For Each r In A If r.HasFormula And r.Value > 0 Then r.Value = r.Value End If Next r End Sub
因为它是工作表代码,所以安装和自动使用非常简单:
- 右键单击Excel窗口底部附近的选项卡名称
- select查看代码 – 这会popup一个VBE窗口
- 粘贴东西,closuresVBE窗口
如果您有任何疑问,请先在试用工作表上尝试。
如果您保存该工作簿,该macros将与它一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx
要删除macros:
- 调出上面的VBE窗口
- 清除代码
- closuresVBE窗口
要了解有关macros的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解有关事件macros(工作表代码)的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/event.htm
macros必须启用这个工作!
.Copy和.PasteSpecial适用于任何范围:
Sub ConvertCellsToValues(Param as Range) Param.Copy Param.PasteSpecial Paste:=xlPasteValues End Sub