返回列表 上一主題 發帖

[發問] 按鈕為動態文字

[發問] 按鈕為動態文字

Hi 各位前輩好
我試著想要用一個VBA按鈕內的文字為動態
如附加檔案內
當我將"V"放在C2時,為何點選執行鈕之後,"V" 直接跳到C6?
是哪裡弄錯了嗎?

New folder.zip (85.31 KB)
莫讓他人錯誤傷害自己

本帖最後由 y54161212 於 2022-7-14 17:15 編輯
Hi 各位前輩好
我試著想要用一個VBA按鈕內的文字為動態
如附加檔案內
當我將"V"放在C2時,為何點選執行鈕 ...
y54161212 發表於 2022-7-14 16:56



是因為沒有設定斷點讓她維持住嗎?
意思是

當文字等於B2時,"V"跳到C3
然後要讓它脫離For這個迴圈才會讓"V"維持在C3
下一次點按鈕的時候
才會變成文字等於B3,"V"跳到C4
是這樣嗎?


==============================
已經解決
確實是如此
哈!
莫讓他人錯誤傷害自己

TOP

回復 2# y54161212


    你的code看不到有任何判斷式跳脫的存在
    只是單純的 迴圈執行~

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

本帖最後由 singo1232001 於 2022-12-5 00:59 編輯

回復 1# y54161212

按鈕測試文字變動 v1.zip (19.44 KB)

TOP

本帖最後由 Andy2483 於 2022-12-5 11:02 編輯

回復 4# singo1232001


    謝謝前輩
這個範例對於後學太重要了!
對於儲存格內容編輯的觸發事件的陳述方法有更一層次的認知,運用一個布林變數在最前面終止再觸發
謝謝
未編輯C欄時:


編輯後:


後學的學習心得如下,請前輩再指導!謝謝
Option Explicit
Dim stopA, R&
'↑宣告變數!(stopA)是通用型變數,R是長整數
Private Sub Worksheet_Change(ByVal Target As Range)
'↑儲存格內容編輯觸發事件
If stopA = True Then Exit Sub
'↑如果stopA 這變數是布林值 True!就跳出程式執行
'這stopA 的初始值是 無
If Target.Count > 1 Then Exit Sub
'↑如果觸發格超過1格!就跳出程式執行
If Target.Column <> 3 Then Exit Sub
'↑如果觸發格不是在第三欄!就跳出程式執行
If Target.Row = 1 Then Exit Sub
'↑如果觸發格在第一列!就跳出程式執行
R = Cells(Rows.Count, 2).End(xlUp).Row
'↑令R變數 是B欄最後的有內容儲存格列號
If Target.Row > R Then Exit Sub
'↑如果觸發格的列號大於 R變數
If UCase(Target.Value) <> "V" Then Exit Sub
'↑如果觸發格的值轉大寫之後不是"V"英文字母!就跳出程式執行
'前面這些都是為了讓不符合需要的條件都 跳出程式執行
stopA = True
'↑令stopA 是布林值 True
Range("c2:c" & R).ClearContents
'↑令[C2]到C欄的R變數列儲存格清除內容
'1.這個動作會讓程序跳到最前面繼續執行,因為.ClearContents(清除內容)本來就是編輯儲存格
'所以初次觸發並沒有跑到下面的程序
'2.到了 If stopA = True Then Exit Sub 跳出程式執行 並還沒真正結束!
'因為第一次的觸發還沒往下跑完,會繼續往下程序繼續跑

Target.Value = "V"
'↑令觸發格的值是 "V"
stopA = False
'↑令stopA 這布林變數為 False
CommandButton1.Caption = Target.Offset(0, -1)
'↑令按鈕文字是 觸發格偏移左邊一欄的值
End Sub

TOP

        靜思自在 : 【時間成就一切】時間可以造就人格,可以成就事業,也可以儲積功德。
返回列表 上一主題