例如,我希望能夠基於單元格的結果運行宏。基於單元格結果運行的VBA宏
如果A1是1111100然後運行X宏如果它的1000000然後運行這個宏等。我曾看過「案例選擇」,但在這件事上我缺乏知識使我可能不是我想要的東西。
任何想法? :/
謝謝你的進步。
JB
例如,我希望能夠基於單元格的結果運行宏。基於單元格結果運行的VBA宏
如果A1是1111100然後運行X宏如果它的1000000然後運行這個宏等。我曾看過「案例選擇」,但在這件事上我缺乏知識使我可能不是我想要的東西。
任何想法? :/
謝謝你的進步。
JB
你可以結合這兩種類型,是的,一個Case Select
是最容易閱讀和維護。
這裏的運行取決於什麼是A1不同的程序示例代碼:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1"), Target) Is Nothing Then
Application.EnableEvents = False
Select Case Target.Value
Case "A"
FunctionWhenA
Case 1
ThasIsAnotherFunction
End Select
Application.EnableEvents = True
End If
End Sub
注意,我還禁用/啓用事件,所以這是不是每一個單元格改爲
主要有兩種類型的Excel宏的
1-那些已寫入執行寫入執行計算操作,更改數據等
2和那些並將值返回給某些單元格 (用作未內置到Excel中的自定義公式)
第一種類型只能通過單擊窗體上的按鈕觸發以啓動執行,調用Ma在Excel中選擇交叉窗口並選擇要運行的宏的名稱
第二種類型可以在某個單元格的值發生變化時立即運行(該單元格必須是所述宏函數的輸入,計算並返回一個特定的輸出),因此返回的值將被存儲在另一個單元格中。
在第二種類型中,Excel將忽略任何試圖修改其他單元格內容的代碼,對工作表,工作簿或任何其他操作執行操作,該操作不限於包含自定義宏的公式的單元格。
如果您打算運行第一個類型的宏,並希望在特定值更改後立即執行該宏,那麼這是不可能的。
如果你想編寫第二種類型的宏,那麼這是可能的,但代碼將僅限於單個單元格。
時間觸發是將需要通過它們循環。
您可以將下面的「cas」subs替換爲您的VBA實現。
Function Strange(myVal)
Select Case myVal
Case 1
Cas1
Case 2
Cas2
Case 3
Cas3
End Select
End Function
Sub Cas1()
MsgBox ("hi")
End Sub
Sub Cas2()
MsgBox ("ha")
End Sub
Sub Cas3()
MsgBox ("ho")
End Sub
Sub LoopThem()
Do While ActiveCell.Value <> ""
Strange (ActiveCell.Value)
ActiveCell.Offset(1, 0).Activate
Loop
End Sub
因此,值爲1,2,3的單元格A1到A3會連續彈出msgboxes「hi」「ha」「ho」。
修正了它。
通過使用Intergers完成此操作,當我沒有其他數據單元用於停止宏,並且檢測到許多'1'代碼時,使用「For」命令根據需要複製數據。
我不介意循環的宏,它的工作方式下來的單元格(從A1開始,工作到A100或Z1等)。我需要使用這兩種方法,但這可能使用不同的宏,但我希望它根據單元格內的數字來處理數字和操作列表。 – JamieB