返回列表 上一主題 發帖

[發問] 選擇下拉式清單自動填入

回復 20# Andy2483
謝謝您的解說,VBA實在太高深了,我曾試著自己解決,但是真的”不會就是不會”,只能依您的程式碼來試著理解,真的很幸運有您的不吝賜教,再次深深一鞠躬,真的很謝謝您。
年齡不小,但我很想學

TOP

回復 21# bhsm


        謝謝前輩回復
邏輯是可以訓練的,例如 厚臉皮的學生 就很笨學了十幾年還很認真的學,不放棄
這麼優質的學習平台怎捨得讓 真的”不會就是不會”成為事實呢?
一天進步一點點就可以了
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

利用 index 值填充//
Private Sub Worksheet_Change(ByVal Target As Range)
Dim j%, k%
With Target
     If .Address <> "$E$4" And .Address <> "$F$4" Then Exit Sub
     j = Abs(([e4] = [b4]) + ([e4] = [b5]) * 4)
     k = Abs(([f4] = [c4]) + ([f4] = [c5]) * 2 + ([f4] = [c6]) * 3)
     If j * k Then [f9].Cells(j + k - 1) = [f5]
End With
End Sub

TOP

回復 23# 准提部林
感謝准提部林大教導另一種方式,晚輩試了試,無法顯示數值,煩請您再次指導,謝謝

1.rar (11.36 KB)

年齡不小,但我很想學

TOP

回復 24# bhsm

F5 是空的~~~~~~~~~~~~~~

TOP

回復 25# 准提部林
謝謝准提部林大提醒,已解決,感恩
年齡不小,但我很想學

TOP

本帖最後由 Andy2483 於 2023-4-24 08:36 編輯

回復 23# 准提部林


    謝謝論壇,謝謝前輩指導
後學學習心得如下,請前輩再指導

'利用 index 值填充//
https://learn.microsoft.com/zh-t ... sheetfunction.index
Private Sub Worksheet_Change(ByVal Target As Range)
'↑當使用者或外部連結變更工作表中的儲存格時會發生此事件。
Dim j%, k%
'↑宣告變數:(j,k)是短整數
With Target
'↑以下是關於觸發的程序
     If .Address <> "$E$4" And .Address <> "$F$4" Then Exit Sub
     '↑如果觸發格的位址不是 "$E$4"而且也不是 "$F$4" 就結束程式執行
     j = Abs(([e4] = [b4]) + ([e4] = [b5]) * 4)
     '↑令j這短整數是 絕對值(布林值 + 布林值 *4)
     '如果[e4] = [b4] 其布林值是1,再如果[e4] = [b5]布林值是0*4=0 ,結果值是1
     '如果[e4] = [b4] 其布林值是0,再如果[e4] = [b5]布林值是1*4=4 ,結果值是4

     k = Abs(([f4] = [c4]) + ([f4] = [c5]) * 2 + ([f4] = [c6]) * 3)
     '↑令k這短整數是 絕對值(布林值 + 布林值 *2)+(布林值 *3)
     '[f4]=[c4]_其布林值是1,[f4]=[c5]_布林值是0*2=0,[f4]=[c6]是0*3=0,結果值是1
     '[f4]=[c4]_其布林值是0,[f4]=[c5]_布林值是1*2=2,[f4]=[c6]是0*3=0,結果值是2
     '[f4]=[c4]_其布林值是0,[f4]=[c5]_布林值是0*2=0,[f4]=[c6]是1*3=3,結果值是3

     If j * k Then [f9].Cells(j + k - 1) = [f5]
     '↑如果j變數*k變數不是 0,就令[f9]相對位置儲存格值是 [f5]
End With
End Sub
絕對值括弧裡的值看起來都是正數,雖然尚不了解為何要加Abs,後學如果知道了會回來補充
謝謝前輩
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 27# Andy2483
感謝Andy2483大加上中文註解
年齡不小,但我很想學

TOP

回復 27# Andy2483


VBA中的 True 填為 -1, 與公式中的 1 不同

TOP

本帖最後由 Andy2483 於 2023-4-25 15:01 編輯

回復 29# 准提部林


    謝謝前輩指導
這問題應該是VBA的基礎,後學不求甚解,一直錯誤認知中學習,謝謝前輩的提攜

Sub TEST()
MsgBox ([A1] = [A1]) + ([B1] = [B1])
End Sub

執行結果:


============================================
Sub TEST_1()
MsgBox ([A1] <> [A1]) + ([B1] <> [B1])
End Sub
結果值是 0
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 脾氣嘴巴不好,心地再好也不能算是好人。
返回列表 上一主題