返回列表 上一主題 發帖

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

回復 10# Andy2483
衷心感謝Andy2483大的指導,正是小弟想要的,不知您是否有空可在您的程式碼中加入中文說明?讓小弟學習,謝謝
年齡不小,但我很想學

TOP

本帖最後由 Andy2483 於 2023-4-10 16:27 編輯

回復 11# bhsm

謝謝前輩,以下心得註解請參考
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'↑當使用者或外部連結變更工作表中的儲存格時會發生此事件
With Target
'↑以下是關於觸發事件的程序
   If .Address = "$E$4" Or .Address = "$F$4" Then
   '↑如果觸發儲存格是[E4] 或[F4]的位址
      Dim Y, S, Brr, i%, j%, T$, N&
      '↑宣告變數:(Y,S,Brr)是通用型變數,(i,j)是短整數,T是字串變數
      'N是長整數

      Set Y = CreateObject("Scripting.Dictionary")
      '↑令Y這通用型變數是 字典
      Brr = [F9].Resize(6, 1)
      '↑令Brr這通用型變數是 二維陣列,以[F9]向下擴展6格的儲存格值帶入
      For i = 4 To 5
      '↑設順迴圈!i從4到 5
         For j = 4 To 6
         '↑設順迴圈!j從4到 6
            T = Cells(i, 2) & "|" & Cells(j, 3)
            '↑令T這字串變數是 i迴圈列B欄儲存格值連接 "|",
            '再連接 j迴圈列C欄儲存格值之後的新字串

            S = Val(Cells(i, 2)) + Val(Cells(j, 3))
            '↑令S這通用型變數是 i迴圈列B欄儲存格值轉化為數字值,
            '加上j迴圈列C欄儲存格值轉化為數字值之後的新數值

            N = N + 1: Y(T) = S
            '↑令N這長整數變數 累加1
            '令以T變數為key,item是S變數,納入Y字典

            If T = [E4] & "|" & [F4] Then Brr(N, 1) = Y(T)
            '↑如果T變數(字串)同
            '[E4]儲存格值連接"|" 再連接[F4]儲存格值組成的新字串??
            '就令N變數列第1欄Brr陣列值是 以T變數查Y字典的item值

         Next
      Next
      [F9].Resize(6, 1) = Brr
      '↑[F9]向下擴展6格的儲存格值以 Brr陣列值帶入
      Set Y = Nothing: Erase Brr
      '↑釋放變數
   End If
End With
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 12# Andy2483
感謝Andy2483大不厭其煩的指導,後進會好好拜讀消化,有問題再請教您,感恩
年齡不小,但我很想學

TOP

回復 13# bhsm


    謝謝前輩不嫌棄,請前輩常上論壇一起學習
祝 順心常樂
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 14# Andy2483
請問Andy2483大:這是我在網路上看到的程式碼,它的計算所得會由I1開始填入,若我想由G7開始填入,請問該如何修改?謝謝

新增 Microsoft Excel 工作表 .rar (11.39 KB)

年齡不小,但我很想學

TOP

回復 15# bhsm


    謝謝前輩
1.若不同主題,請另發主題給前輩們幫忙
2.下午剛接到一份急趕的工作需立馬處理,再撥空研究前輩的範例
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 16# Andy2483
謝謝您,工作優先
年齡不小,但我很想學

TOP

回復 15# bhsm


    謝謝前輩
以下是學習方案,請前輩參考

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
   If .Address = "$F$3" Or .Address = "$H$3" Then
      If [G7] = "" Then
         [G7] = [G4]
         Else
            [G65536].End(3).Item(2) = [G4]
      End If
   End If
End With
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 18# Andy2483
真是萬分感謝您,在百忙之中仍為小弟解惑,感恩、謝謝
年齡不小,但我很想學

TOP

回復 19# bhsm


    謝謝論壇,謝謝各位前輩,謝謝前輩再回復
後學接到的工作很快就完成了,學習了陣列與字典,程式設計的邏輯更清楚,工作效率提升多倍,
設計的程式執行的效率提升上百倍,以前執行30分鐘,現在只要10秒鐘
勤練習是很重要的,謝謝前輩一起上論壇學習

Private Sub Worksheet_Change(ByVal Target As Range)
'↑當使用者或外部連結變更工作表中的儲存格時會發生此事件
With Target
'↑以下是關於觸發事件的程序
   If .Address = "$F$3" Or .Address = "$H$3" Then
    '↑如果觸發儲存格是[F3] 或[H3]的位址
      If [G7] = "" Then
      '↑如果[G7]儲存格值是空字元
         [G7] = [G4]
         '↑令[G7]儲存格值是 [G4]儲存格值
         Else
            [G65536].End(3).Item(2) = [G4]
            '↑否則令G欄最後一個有內容儲存格的下方一格值是 [G4]儲存格值
      End If
   End If
End With
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 我們最大的敵人不是別人.可能是自己。
返回列表 上一主題