Note: The other languages of the website are Google-translated. Back to English

Excel中單元格值更改時如何運行宏?

通常,在Excel中,我們可以按F5鍵或“運行”按鈕執行VBA代碼。 但是,您是否曾經嘗試在單元格值更改時運行特定的宏代碼? 本文中,我將介紹一些快速技巧來處理Excel中的這項工作。

當特定單元格值隨VBA代碼變化時運行或調用宏

當任何單元格值在使用VBA代碼的範圍內更改時,運行或調用宏


箭頭藍色右氣泡 當特定單元格值隨VBA代碼變化時運行或調用宏

要通過更改單元格值來運行宏代碼,請按照以下VBA代碼執行操作:

1。 如果單元格值更改,請右鍵單擊要執行宏的工作表選項卡,然後選擇 查看代碼 從上下文菜單中,然後在打開的 適用於應用程序的Microsoft Visual Basic 窗口,將以下代碼複製並粘貼到空白模塊中:

VBA代碼:單元格值更改時運行宏:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Call Mymacro
    End If
End Sub

如果單元格更改,則doc運行宏1

備註:在上面的代碼中, A1 是您要基於其運行代碼的特定單元格, 是您要運行的宏名稱。 請根據需要更改它們。

2。 然後保存並關閉代碼窗口,現在,當您在單元格A1中輸入或更改值時,將立即觸發特定代碼。


箭頭藍色右氣泡 當任何單元格值在使用VBA代碼的範圍內更改時,運行或調用宏

如果要在單元格區域中任何一個單元格值更改時運行或觸發宏,則以下代碼可能會對您有所幫助。

1。 如果單元格值更改,請右鍵單擊要執行宏的工作表選項卡,然後選擇 查看代碼 從上下文菜單中,然後在打開的 適用於應用程序的Microsoft Visual Basic 窗口,將以下代碼複製並粘貼到空白模塊中:

VBA代碼:當任何單元格值在某個範圍內變化時,運行宏:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub

如果單元格更改,則doc運行宏2

備註:在上面的代碼中, A1:B100 是您要基於其運行代碼的特定單元格, 是您要運行的宏名稱。 請根據需要更改它們。

2。 然後保存並關閉代碼窗口,現在,當您在A1:B100的任何單元格中輸入或更改值時,將立即執行特定代碼。


從多個工作簿中刪除所有宏

Excel的Kutools's 批量刪除所有宏 實用程序可以幫助您根據需要從多個工作簿中刪除所有宏。 立即下載並免費試用Excel的Kutools!

Excel的Kutools:具有300多個方便的Excel加載項,可以在30天內免費試用,沒有任何限制。 立即下載並免費試用!


相關文章:

如何在Excel中打印之前自動運行宏?

如何在Excel中根據單元格值運行宏?

如何基於從Excel的下拉列表中選擇的值運行宏?

如何通過單擊Excel中的超鏈接運行宏?

從工作簿中選擇工作表時如何運行宏?


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (17)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
這個模塊不適合我。 它說當單元格的 VALUE 發生變化時,它將執行代碼。 我發現如果我在單元格中鍵入它可以工作,但是如果單元格的值被公式更改,例如 Counta,那麼它不會執行。 當 VALUE 通過公式更改時,您有執行宏的解決方案嗎? 謝謝,韋恩
網站主持人對此評論進行了最小化
和韋恩一樣的問題。 非常感謝任何幫助! 謝謝羅尼
網站主持人對此評論進行了最小化
大家好,

是的,上述代碼僅在單元格值手動變化時可用,如果您需要在公式結果隨其相關單元格變化時自動運行特定的宏代碼,請訪問本文:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
請嘗試一下,希望得到您的回复。
網站主持人對此評論進行了最小化
它不工作......&我正在手動更改單元格值。 是否有任何必須設置的預配置?
網站主持人對此評論進行了最小化
在程序中對此進行測試並用作參數


Private Sub Worksheet_Change(ByVal Target As Range)

MsgBox Target.Address & "-" e Target.AddressLocal

END SUB
網站主持人對此評論進行了最小化
是的,描述說它應該在值更改時觸發,但是第二個代碼說它是在值什麼都沒有的時候,而第一個代碼在值更改時也不會觸發,但是如果我在查看代碼時按 F5,它想要觸發 MyMacro,但似乎對價值變化的反應不如從無到有或相反。
網站主持人對此評論進行了最小化
這對我來說是第一次使用基於列表選擇顯示文本的數據驗證列表。
網站主持人對此評論進行了最小化
對我來說很棒! 我的困境是我希望它是一個相對引用宏,並且按 Enter 保存條目和刪除以清除單元格之間存在區別。
網站主持人對此評論進行了最小化
嘿,有用的代碼。 我在想是否可以在更改時更改的單元格周圍插入一個環? 並每週一重置圈子?
網站主持人對此評論進行了最小化
你好,凱文,
這裡沒有解決您的問題的想法,如果您有任何好的解決方案,請在此處發表評論。
網站主持人對此評論進行了最小化
您正在調用的宏在哪裡? 我在 Modules 文件夾中有我的,但是當我在工作表的任何單元格中輸入任何值時,我得到一個編譯錯誤,說:
預期的變量或過程,而不是模塊。

請大家幫忙。
網站主持人對此評論進行了最小化
嗨,卡特賴特博士,
很抱歉這麼晚才回复你。
是的,正如您所說,宏代碼應該位於模塊中,您需要將代碼名稱更改為您自己的名稱,如下圖所示:
查看附件 (1 / 5)
網站主持人對此評論進行了最小化
你好,下午好
quisiera saber el codigo para que se active una macro cuando cambia el valor de una celda de una columna, pero este valor cambia por formula,sin que el usuario introduzca ningun valor。
網站主持人對此評論進行了最小化
大家好,我正在解決以下問題:我想在 A 列中插入鏈接時抓取網站的標題,並將此值放入 B 列中的相關單元格(旁邊)。問題似乎是一旦我粘貼在 A 列中的網站,代碼將整個列表從 A2 列重新運行到代碼中定義的“最後一行”。 有沒有辦法只在修改單個列 A 後修改 B 列? 即,如果在 A36 列中粘貼一個鏈接,我會在 B36 中獲得一個標題,無論單元格是在使用範圍的中間還是在最底部。 我想使用它而不必重新運行當前的多個輸入; (即循環“for i =2 to last row”)? 另外,我想將下面的模塊化宏(即子)更改為對變化(即相交函數)做出反應的私有子,其中“目標”是A:A範圍內的任何單元格。 非常感謝!


子 get_title_header()



將 wb 變暗為對象

將文檔調暗為對象

將 sURL 變暗為字符串

Dim lastrow 只要

lastrow = Sheet1.Cells(Rows.Count, "A").End(xlUp).row



對於i = 2到拉斯特羅

設置 wb = CreateObject("internetExplorer.Application")

sURL = 單元格(i, 1)



wb.navigate 網址

wb.Visible = 假



而 wb.Busy

杜文斯

申請



''HTML 文件

設置 doc = wb.document



單元格(i, 2) = doc.Title



出錯時轉到 err_clear

單元格(i, 3) = doc.GetElementsByTagName("h1")(0).innerText

錯誤清除:

如果 Err <> 0 那麼

Err.Clear

繼續下一步

如果結束

wb.退出

範圍(單元格(i,1),單元格(i,3))。Columns.AutoFit

接下來,我



END SUB




謝謝!
網站主持人對此評論進行了最小化
當另一個工作簿(零件狀態)進行更改時,我正在嘗試自動化 1 個工作簿(BOM)。 部件狀態文件每 15 分鐘更新一次。 當這些更改發生時,我需要知道如何自動化特定列? 有任何想法嗎
網站主持人對此評論進行了最小化
我正在使用下面的代碼來隱藏各種列,具體取決於從位於單元格 C3 中的下拉框中的選擇,但是在工作表中的任何位置執行計算後,所有列都變為 UNHIDDEN。 我該如何解決?

Private Sub Worksheet_Change(ByVal Target As Range)

列(“D:F”).AutoFit

將 Proj1 調暗為字符串
將 Proj2 調暗為字符串
將 Proj3 調暗為字符串
將 Proj4 調暗為字符串
將 Proj5 調暗為字符串
將 Proj6 調暗為字符串
將 Proj7 調暗為字符串
將 Proj8 調暗為字符串
將 Proj9 調暗為字符串
將 Proj10 調暗為字符串

Proj1 = ActiveWorkbook.Sheets("Projects").Range("A1").Value
Proj2 = ActiveWorkbook.Sheets("Projects").Range("A2").Value
Proj3 = ActiveWorkbook.Sheets("Projects").Range("A3").Value
Proj4 = ActiveWorkbook.Sheets("Projects").Range("A4").Value
Proj5 = ActiveWorkbook.Sheets("Projects").Range("A5").Value
Proj6 = ActiveWorkbook.Sheets("Projects").Range("A6").Value
Proj7 = ActiveWorkbook.Sheets("Projects").Range("A7").Value
Proj8 = ActiveWorkbook.Sheets("Projects").Range("A8").Value
Proj9 = ActiveWorkbook.Sheets("Projects").Range("A9").Value
Proj10 = ActiveWorkbook.Sheets("Projects").Range("A10").Value

將 xRG 調暗為範圍
將 xHrow 調暗為整數
設置 xRG = Range("C3")
If Not Intersect(Target, xRG) 什麼都不是

如果 Target.Value = Proj1 那麼
Application.Columns("E:F").Hidden = True
Application.Columns("D").Hidden = False

ElseIf Target.Value = Proj2 那麼
Range("D:D, F:F").EntireColumn.Hidden = True
Application.Columns("E").Hidden = False

如果結束
如果結束
END SUB
網站主持人對此評論進行了最小化
這正是我一直在尋找的。 當用戶在單元格中輸入值時,將運行一個簡單的排序宏。 宏自行運行良好,但使用建議的代碼時出現無效使用屬性錯誤。

可能是什麼問題?
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護