返回列表 上一主題 發帖

計算後自動刪除

回復 1# coafort


    謝謝前輩發表此主題
後學建議vba觸發的方式

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
'↑如果觸發編輯儲存格位址是 ""$A$2""
   If IsNumeric([A1]) And IsNumeric([A2]) And [A2] <> "" Then
   '↑如果IsNumeric()判斷[A1]是數值,IsNumeric()判斷[A2]也數值,而且[A2]不是空字元
      [A3] = [A1] + [A2]: [A2] = ""
      '↑令[A3]儲存格值=[A1]儲存格值+[A2]儲存格值: 然後令[A2]儲存格值是空字元
   End If
End If
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 3# coafort


    謝謝前輩回復
上傳測試檔,請下載來試試看
計算後自動刪除.zip (7.92 KB)
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2023-2-16 15:25 編輯

回復 5# coafort


    謝謝前輩再回復
請前輩將工作表模組下原來的程式碼換成 下列程式碼,然後再操作試試看

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
'↑如果觸發編輯儲存格位址是 ""$A$2""
   If IsNumeric([A1]) And IsNumeric([A2])  Then
   '↑如果IsNumeric()判斷[A1]是數值,IsNumeric()判斷[A2]也是數值
      Application.EnableEvents = False
      '↑令觸發失效
      [A1] = [A1] + [A2]: [A2] = ""
      '↑令[A1]儲存格值=[A1]儲存格值+[A2]儲存格值: 然後令[A2]儲存格值是空字元
      Application.EnableEvents = True
      '↑令恢復觸發
   End If
End If
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 8# coafort


    謝謝前輩繼續一起學習
以下是編輯觸發 $A$2 ,$B$2 $B$2 的測試碼,請前輩試改成所符合需求的,或上傳範例




Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
'↑如果觸發編輯儲存格位址是 ""$A$2""
   If IsNumeric([A1]) And IsNumeric([A2]) Then
   '↑如果IsNumeric()判斷[A1]是數值,IsNumeric()判斷[A2]也是數值
      Application.EnableEvents = False
      '↑令觸發失效
      [A1] = [A1] + [A2]: [A2] = ""
      '↑令[A1]儲存格值=[A1]儲存格值+[A2]儲存格值: 然後令[A2]儲存格值是空字元
      Application.EnableEvents = True
      '↑令恢復觸發
   End If
End If
If Target.Address = "$B$2" Then
'↑如果觸發編輯儲存格位址是 ""$B$2""
   If IsNumeric([B1]) And IsNumeric([B2]) Then
      Application.EnableEvents = False
      [B1] = [B1] + [B2]: [B2] = ""
      Application.EnableEvents = True
   End If
End If
If Target.Address = "$C$2" Then
'↑如果觸發編輯儲存格位址是 ""$C$2""
   If IsNumeric([C1]) And IsNumeric([C2]) Then
      Application.EnableEvents = False
      [C1] = [C1] + [C2]: [C2] = ""
      Application.EnableEvents = True
   End If
End If
End Sub

祝順利! 美好的一天!
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2023-2-17 11:21 編輯

回復 11# 准提部林
回復 11# coafort


    謝謝前輩指導
1.後學在此主題沒有應用 http://forum.twbts.com/thread-23842-1-1.html 心得經驗,謝謝前輩指導
2.防止連續觸發不是只怕再觸發,也要懂得找出口,謝謝前輩
學習心得註解如下,請再指導,謝謝

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
'↑以下是關於儲存格編輯觸發的程序
     If .Count > 1 Or .Item(1) = "" Then Exit Sub
     '↑如果觸發格數量大於 1 或觸發格空白!就結束程式執行
     If Not Intersect(Range("a2:c2"), .Cells) Is Nothing Then
     '↑如果觸發格是在[A2:A2]儲存格裡??
        .Cells(0, 1) = Val(.Cells(0, 1)) + Val(.Value)
        '↑令觸發格的上方那格的值 + (觸發格值以Val 函數轉化回傳的數值)
        .ClearContents
        '↑清除觸發格的內容
        '此清除的程序再次的觸發了,但是 .Item(1) = "" 所以結束程式執行

     End If
End With
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 11# coafort


    建議使用 准提部林前輩的方法更方便擴充使用該功能的儲存格
在以下程式碼藍字部位修改,即可擴充或變更
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
     If .Count > 1 Or .Item(1) = "" Then Exit Sub
     If Not Intersect([A2:C2,G2:I2], .Cells) Is Nothing Then
        .Cells(0, 1) = Val(.Cells(0, 1)) + Val(.Value)
        .ClearContents
     End If
End With
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2023-2-22 08:04 編輯

回復 16# coafort


    謝謝前輩一起學習
請前輩再測試看看,謝謝
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
'↑以下是關於儲存格編輯觸發的程序
     If .Count > 1 Or .Item(1) = "" Then Exit Sub
     '↑如果觸發格數量大於 1 或觸發格的下方格是空白!就結束程式執行
     If Not Intersect([AQ212:AQ218,AW212:AW218,BB221], .Cells) Is Nothing Then
     '↑如果觸發格是在[A2:A2]儲存格裡??
        .Cells(1, 2) = Val(.Cells(1, 2)) + Val(.Cells(1, 1))
       '↑令觸發格的右邊那1格的值 + (觸發格值以Val 函數轉化回傳的數值)
        
        '觸發格本身是.Cells(1,1), 右側1格是.Cells(1,2), 左側1格是.Cells(1,0),
        '上方1格是.Cells(0,1), 下方1格是.Cells(2,1)

        
        .ClearContents
        '↑清除觸發格的內容
        '此清除的程序再次的觸發了,但是 .Item(1) = "" 所以結束程式執行
     End If
End With
End Sub
Option Explicit
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 18# coafort


    恭喜前輩
最後一行多了一個Option Explicit:
漏刪的,Option Explicit是用來檢測變數是否都做了宣告
謝謝前輩,請常一起學習!
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 有時當思無時苦,好天要積雨來糧。
返回列表 上一主題