![](/img/trans.png)
[英]VBA Excel: Using IF statement to run a sub routines (from two selections) based on a cell value (ex. “1”)
[英]Run Sub procedure with IF() statement in cell
我在Excel工作表中遇到問題,可能是由於缺乏了解。 基本上,我在單元格I2中有一個IF()語句,對於if_true,我想運行一個公共Sub,即Sub MyFunc(),它僅將行中的數據復制到新工作表中。
換句話說,我在單元格I2中:
=IF(OR(AND($D2="ABOVE", $F2>$E2, $H2="YES"), AND($D2="BELOW", $F2<$E2, $H2="YES")),MyFunc(),"")
這似乎根本不運行sub,如果我在VBE中運行Sub,它就可以正常工作。
Sub MyFunc()
'begin populating table
'Date
Sheets("Sheet3").Range("A:A").End(xlDown).Offset(1, 0).Value = Format(Now(), "dd/mm/yyyy")
'DayofWeek
Sheets("Sheet3").Range("B:B").End(xlDown).Offset(1, 0).Value = Format(Now(), "ddd")
'copy code and paste in cell
Sheets("Sheet1").Range("A2").Copy Destination:=Sheets("Sheet3").Range("E:E").End(xlDown).Offset(1, 0)
'copy level
Sheets("Sheet1").Range("E2").Copy Destination:=Sheets("Sheet3").Range("F:F").End(xlDown).Offset(1, 0)
'delete row information
Worksheets("Sheet1").Range("A2").ClearContents
Worksheets("Sheet1").Range("C2:E2").ClearContents
Worksheets("Sheet1").Range("G2:H2").ClearContents
'resort colums
SortByMarket
End Sub
根據上述條件,在如何調用此Sub方面有什么建議嗎?
任何幫助是極大的贊賞 :)
是的,如果您使用Andy Pope在此鏈接上執行的功能調用子程序,則可以這樣做:
https://www.ozgrid.com/forum/forum/help-forums/excel-general/41643-can-a-subroutine-be所謂的-within-a-function
您可以編寫一個函數:
Function MyFunc()
Msgbox "Function started"
Call Copy
Application.Run "MySub"
End Function
然后,您可以這樣編寫公式:
=IF(OR(AND($D2="ABOVE", $F2>$E2, $H2="YES"), AND($D2="BELOW", $F2<$E2, $H2="YES")),MyFunc(),"")
注意:如果這樣不能正常工作,請首先嘗試鍵入一個單元格:
=MyFunc()
看看它是否返回任何東西
因此,在您的vba代碼中發布if的答案。
Sub Test()
If (Range("D2").Value = "ABOVE" And Range("F2").Value > Range("E2").Value And Range("H2").Value = "YES") Or (Range("D2").Value = "BELOW" And Range("F2").Value < Range("E2").Value And Range("H2").Value = "YES") Then
MsgBox "CLEAR"
' HERE YOUR CLEARING CODE
End If
End Sub
注意:我不會刪除其他答案,因為我認為這是可以回答您所問問題的替代方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.