簡體   English   中英

在單元格中使用IF()語句運行Sub過程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM