[英]How to use VBA to execute a macro based on an IF statement?
我想運行一個Excel VBA代碼(它要做的就是刪除同一行中的特定單元格,並且我已經打開了相對引用,以便在有適當的“ X”的情況下可以將Excel VBA代碼應用於所有行)基於某個單元格中是否存在X。
到目前為止,這是我嘗試過的(Excel VBA代碼僅稱為“生物學”):
If Range("C22").Value = "X" Then
Call macro_Biology
End If
我應該補充一點,我正在VBA部分“ GetATPLabel”下編寫此代碼。 就像我說的,完全是菜鳥,但我想我已經很親密,因此可以提供任何幫助。
聽起來生物學 (或macro_Biology )宏需要知道它應該在哪一行上工作似乎很重要。 您可以使用參數將此信息傳遞給它。 例:
Sub start_with_this()
Dim rw As Long, lr As Long
With ActiveSheet
lr = .Cells(Rows.Count, "C").End(xlUp).Row
For rw = 2 To lr
If UCase(.Cells(rw, "C").Value) = "X" Then
Call macro_Biology(rw)
End If
Next rw
End With
End Sub
Sub macro_Biology(r As Long)
' r is the row that was passed in.
' do something with r
End Sub
最初啟動start_with_this
宏后,它將遍歷C列中的每個單元,從第2行到最后一行,其中包含任何內容。 如果找到X或x (在比較之前通過將單元格值強制為大寫字母來除去區分大小寫),則它將調用第二個宏macro_Biology
並告訴它要處理的行。
讓我們假設Biology()是標准模塊中的子類:
Sub Biology()
MsgBox "study biology!"
End Sub
要根據需要調用此命令,請運行:
Sub TestIt()
If Range("C22").Value = "X" Then
Call Biology
End If
End Sub
若要在用戶在單元格C22中鍵入X時自動調用Biology() ,請在工作表代碼區域中插入以下事件宏:
Private Sub Worksheet_Change(ByVal Target As Range)
Set intrs = Intersect(Target, Range("C22"))
If Not intrs Is Nothing Then
If intrs.Value = "X" Then
Application.EnableEvents = False
Call Biology
Application.EnableEvents = True
End If
End If
End Sub
要在公式C22單元格中給出X時自動調用Biology() ,請在工作表代碼區域中插入以下事件宏:
Private Sub Worksheet_Calculate()
If Range("C22").Value = "X" Then
Application.EnableEvents = False
Call Biology
Application.EnableEvents = True
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.