根据主题,我需要的是基于其他单元格运行宏。
情况如下:
单元格G3直到行尾包含使用公式=IF(B3="";"";(SUMIF('Incoming Goods'!$F$3:$F$1048576;'Current Stock'!B3;'Incoming Goods'!$M$3:$M$1048576)-(SUMIF('Outgoing Goods'!$D$4:$D$1048576;'Current Stock'!B3;'Outgoing Goods'!$J$4:$J$1048576))))
的数据 - >我需要将此公式转换为VBA
细胞H3应该包含:如果G3.value = 0那么"缺货",否则" "
每当G3中的数据自动更改或此工作表上的任何其他数据更改时,必须计算此工作表。
已经尝试过此代码:
Private Sub Worksheet_Calculate()
Dim Current As Worksheet
Dim Rng1 As Range
Dim Target As Range
Set Current = Worksheets("Current Stock")
Set Rng1 = Current.Range("G:G")
Set Target = Range("H:H")
For Each Rng1 In Target
If Rng1.Value2 = "0" Then
Target.Value2 = "Out Of Stock"
Else
Exit Sub
End If
Next
End Sub
但是,上面的代码不起作用。已尝试使用Private Sub Selection Change()
和Private Sub Selection Change()
,但仍无效。
有什么建议吗?
提前致谢
答案 0 :(得分:0)
第一部分的答案如下:
ActiveCell.FormulaR1C1 = _
"=IF(R[2]C[1]="""","""",(SUMIF('Incoming Goods'!R3C6:R1048576C6,'Current Stock'!R[2]C[1],'Incoming Goods'!R3C13:R1048576C13)-(SUMIF('Outgoing Goods'!R4C4:R1048576C4,'Current Stock'!R[2]C[1],'Outgoing Goods'!R4C10:R1048576C10))))"
方便提示:将任何excel公式转换为代码,点击记录宏按钮,然后单击单元格,按F2键,然后按回车键,并停止记录宏。代码现在将在vba编辑器中的自己的模块中。
答案 1 :(得分:0)
这应该做你想要的。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Application.Intersect(Range("A1"), Target) Is Nothing Then
If IsNumeric(Target.Value) And Target.Value > 200 Then
Call YourMacroName
End If
End If
End Sub