返回列表 上一主題 發帖

[發問] 昨天開始接觸VBA,想簡化程式...

本帖最後由 GBKEE 於 2016-6-3 08:22 編輯

回復 1# bsy4life
luhpro 提供的Dictionary 最簡便,也可用工作表函數 CountIf,Match 替代
  1. Private Sub TextBox6_Change()
  2.     Dim xNo As Variant, y As Range
  3.     Set y = Sheets("CNC名單(All1)").Range("a:a")
  4.     xNo = Application.CountIf(y, Val(TextBox6))  '傳回TextBox6相同的內容在y 的個數
  5.     Select Case xNo
  6.         Case 1   
  7.            'luhpro  上傳的工號索引.xls 名單內的儲存格有些是文字格式
  8.         'y.Value = y.Value   '轉為數字格式      
  9.             xNo = Application.Match(Val(TextBox6), y, 0)  '傳回TextBox6在y 的列號
  10.             ComboBox1 = y.Cells(xNo, "b")
  11.         Case 0
  12.             ComboBox1 = ""
  13.          Case Is > 1
  14.             ComboBox1 = "工號重複"
  15.     End Select
  16. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 6# bsy4life

有錯誤,上傳檔案看看

Application.Match ,查無時傳回錯誤值,所以變數習慣 Type As Variant
這程式Application.Match 有搭配Application.CountIf 傳回的值,可避開錯誤值.
所以xNo可以不設定成 Variant類型.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 口說一句好話,如口出蓮花;口說一句壞話如口吐毒蛇。
返回列表 上一主題