返回列表 上一主題 發帖

[發問] 如何設定

回復 5# acdx
  1. Option Explicit
  2. Dim Ob(), Msg As Boolean
  3. Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) '表單關閉時會執行此程式
  4.     If Text_Checking(TextBox1) = False Then Cancel = True        '表單駐點留在TextBox1上
  5. End Sub
  6. Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  7.     If Text_Checking(TextBox2) = False Then Cancel = True
  8. End Sub
  9. Private Function Text_Checking(T As MSForms.TextBox) As Boolean
  10.     Dim I As Variant
  11.     Text_Checking = True                   '預設為 True
  12.     If Msg Then Exit Function              '表單已關閉
  13.     I = Application.Match(Val(T), Ob, 0)   '找不到
  14.     If IsError(I) Then Text_Checking = False
  15.     If Text_Checking = False Then MsgBox T & " 不是正確的數字" & vbLf & Join(Ob, vbTab) & vbLf & "以上為正確的數字"
  16. End Function
  17. Private Sub UserForm_Initialize()
  18.     Ob = Array(100, 125, 160, 200, 250, 315, 400, 500, _
  19.                 630, 800, 1000, 1250, 1600, 2000, 2500, 3150, _
  20.                 4000, 5000, 6300, 8000, 10000, 12500, 16000, 20000)
  21. End Sub
  22. Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  23.     Msg = True                '表單關閉時變數設為  True
  24. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 9# stillfish00
Match 不是特例, 使用Application.WorksheetFunction其他函數傳回錯誤值,VBA 會有產生錯誤值.
  1. Option Explicit
  2. Sub TEST()
  3.     Dim A As Variant
  4.     A = Application.Match(999, Array(1, 2, 3), 0)
  5.     If IsError(A) Then MsgBox "Not found"
  6.     '可用 [ 計算活頁簿的名稱或函數 ]
  7.     A = [MATCH(999,{1, 2, 3},0)]  '[ 這不可用變數(計算活頁簿的名稱或函數) ]
  8.     If IsError(A) Then MsgBox "Not found"
  9.     ' **** 變通方式******************
  10.     Names.Add "AAA", Array(1, 5, 100, 3)
  11.     Names.Add "B", 100
  12.     If IsError([MATCH(B,AAA,0)]) Then
  13.         MsgBox "Not found"
  14.     Else
  15.         MsgBox [MATCH(B,AAA,0)]
  16.     End If
  17. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2013-9-4 12:26 編輯

回復 6# acdx
  1. Private Sub UserForm_Initialize()   'ExportResult(表單模組)
  2. Dim Ob()   '<-這Dim Ob 變數 只可以在 UserForm_Initialize程序中使用
  3. Ob = Array(100, 125, 160, 200, 250, 315, 400, 500, _
  4.             630, 800, 1000, 1250, 1600, 2000, 2500, 3150, _
  5.             4000, 5000, 6300, 8000, 10000, 12500, 16000, 20000)
  6. End Sub
複製代碼
  1. Option Explicit         'ExportResult(表單模組)
  2. Dim Ob(), Msg As Boolean  ' 這兩行程式碼 請放在 ExportResult(表單模組)的最上端
  3. (如此這Dim Ob 變數,ExportResult(表單模組)所有程式可乎叫的)
  4. Private Sub CommandButton2_Click()
  5. Unload Me
  6. ALtoolbox.Show
  7. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 做該做的事是智慧,做不該做的事是愚癡。
返回列表 上一主題