ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] «ç»ò¦bUSERFORM¤¤¥[¤J¥i¿z¿ï½Æ¿ï¤§¾ðª¬¹Ï

¥»©«³Ì«á¥Ñ luhpro ©ó 2016-4-22 23:35 ½s¿è

¦^´_ 9# chaoyiho
©êºp,²{¦b¤~¦³®É¶¡¦^¤å.

§Ú¤§©Ò¥H·|§â vD ªº©w¸q©ñ¦b Module ¤W,
­ì¥ýªººc·Q¬O¸ê®ÆÀÉ®×´N¨º¤@­Ó,
¨º»ò¶}©l®É´NŪ¨ú¤@¦¸,
¦r¨å«Ø¦n«á­±¥u­n®³¨Ó¥Î´N¦n¤F,
¤£¥Î¨C«ö¤@¦¸«ö¶s´N¤S­n­«·sŪ¨úÀɮפΫإ߹ïÀ³¸ê®Æ.

²ßºD©ÊªºÂI¨â¤U "¶}±ÒÂÂÀÉ" «ö¶s¶}±Ò CommandButton1_Click ¹ê°µ¦Û¤vªººc·Q,
¦]¬°¦^¤å«á¤~µo²{³B²z "±z¨S¦³¶}±Ò¥ÀÀÉ" ªº Sub ¦³¦n´X­Ó,  O.O"
©È·|»P¤§«eµ²ªG­«Å|¤~·|¥[¨º¤@¦æ®ø°£«e¤â.

¦Ü©ó§Aµo¥Íªº°ÝÃD,
§Ú¦b³o¨â­ÓÀɮ׶¡¾Þ§@¨Ã¤£·|µo¥Í,
¦]¬° RemoveAll ¥u²M°£ Key »P ¸ê®Æ ¶¡ªº¹ïÀ³Ãö«Y,
¨Ã¤£·|§R°£ vD ¦r¨åª«¥ó.
¬ã§P¥i¯à¬O¾Þ§@¤¤µ{¦¡¥ý«á¶¶§Ç°ÝÃD,
¾É­P§A¨S¦³°õ¦æ¨ì  Set vD = CreateObject("Scripting.Dictionary").

¦ÓÃö©ó°ÝÃDªº³B²z:
¦b 10# ªº¬O¤@ºØ²³æ©úÁAªº³B²z¤èªk.
¤£¹L¨Ì­Ó¤H¤§«eªº¸gÅç,
¤]¦³¥i¯à¬O­Ó¤H¥\¤O¤Ó®t,
§Úµo²{ Excel ¤W¨Ã¤£¯à¥Î¤@­Ó Is Nothing ´N¥]¿ì©Ò¦³³oÃþª«¥ó¿ù»~ªº§PÂ_,
¦]¬°³o¤@¦æ«ü¥O¤]¥i¯à·|¥X²{¿ù»~(¦]¬°³s vD ³o­Óª«¥ó³£¤£¯à¥X²{¦b§PÂ_¦¡¤¤)

¥t¦³¤@­Ó«Ü¦h¤H¨Ï¥Îªº³B²z¤èªk,
´N¬O¤@¶}©l´N¥[­Ó On Error Resume Next,
³o¼Ë¹J¨ì¿ù»~´N·í°µ¨S°ÝÃDµo¥ÍÄ~Äò¶]¤U¥h,
¹B®ð¦n´N¨S¨Æ...
¦ý­n¬O¹B®ð¤£¦nªº¸Ü...

¤ñ¸û¥¿²Î¥B¤£©ö¥X²{«D¹w´Áµ²ªGªº°µªk¬O°w¹ï¿ù»~°µ±Mªùªº³B²z. (½Ð·j´M On Error ³¯­z¦¡ ªº»¡©ú)

Sub ChkFile()
...
    On Error GoTo ErrorHandler    ' ¶}±Ò¿ù»~³B²zµ{¦¡¡C
    vD.RemoveAll ' µo¥Í¿ù»~»Ý°µ³B²zªºµ{¦¡
    On Error Goto 0    ' Ãö³¬¿ù»~³B²zµ{¦¡¡C
...   
Exit Sub        ' Â÷¶}µ{¦¡¡A¥HÁקK¶i¤J¿ù»~³B²zµ{¦¡¡C

ErrorHandler:    ' ¿ù»~³B²zµ{¦¡¡C
    Select Case Err.Number    ' Àˬd¿ù»~¥N½X¡C
        Case 424    ' µo¥Í¡u¦¹³B»Ý­nª«¥ó¡v¤§¿ù»~¡C
            Set vD = CreateObject("Scripting.Dictionary") ' «Ø¥ßª«¥ó¡C(°w¹ï¿ù»~µo¥Í­ì¦]°µ¸É±Ï©Î³B²z)

        Case Else ' ¥Î Err.number ¨ú±o¿ù»~¥N½X, ¥Î Err.Description ¨ú±o¿ù»~»¡©ú¤å¦r. Err.Clear ²M°£¿ù»~ºX¼Ð
            MsgBox Prompt:=Err.Description, Buttons:=vbOK, Title:="µo¥Í¿ù»~"
            Err.Clear
            Exit Sub
    End Select
    Resume    ' ±Nµ{¦¡°õ¦æ¨BÆJ¦^¨ì­ìµo¥Í¿ù»~ªº³¯­z¦¡¤¤¡C
End Sub


¥t¥~, °w¹ï­«½Æ¥B¥i´À¥Nªºµ{§Ç«Øij¥t«Ø¥ß°Æµ{¦¡¥H¨Ñ©I¥s, ¦p:
Image22_Click
Image3_Click
Image32_Click()
CommandButton1_Click()
CommandButton10_Click()
CommandButton14_Click()
CommandButton6_Click()
ªº¤º®e¥þ³¡³£¬O :

    If Application.FindFile = False Then
        MsgBox "±z¨S¦³¶}±Ò¥ÀÀÉ"
    End If

¨º´N¥i¥H§â³o¬qÂk¨ì Module ¤º, ³]¬° Public, ¦A­Ó§O©ñ¤J©I¥s«ü¥O§Y¥i.
¦n³B¬Oµ{¦¡½X®e©ö­×§ï»PºÞ²z, ÁYµuµ{¦¡½X, ¿ëÃѫפ]¸û¦n.
  1. Public Sub ChkFile()
  2.     If Application.FindFile = False Then
  3.         MsgBox "±z¨S¦³¶}±Ò¥ÀÀÉ"
  4.     End If

  5.     Dim lRow&
  6.    
  7.     lRow = 3
  8.    
  9.     On Error GoTo ErrorHandler    ' ¶}±Ò¿ù»~³B²zµ{¦¡¡C
  10.     vD.RemoveAll
  11.     EXCELªí³æ³B²z¤¶­±.ListBox1.Clear ' ²M°£ ListBox ªº¿ï³æ
  12.     On Error GoTo 0    ' Ãö³¬¿ù»~³B²zµ{¦¡¡C
  13.    
  14.     While Cells(lRow, 1) <> ""
  15.       If Not vD.Exists(CStr(Cells(lRow, 1))) Then
  16.         EXCELªí³æ³B²z¤¶­±.ListBox1.AddItem CStr(Cells(lRow, 1))
  17.         vD(CStr(Cells(lRow, 1))) = lRow
  18.       End If
  19.       lRow = lRow + 1
  20.     Wend
  21. Exit Sub        ' Â÷¶}µ{¦¡¡A¥HÁקK¶i¤J¿ù»~³B²zµ{¦¡¡C

  22. ErrorHandler:    ' ¿ù»~³B²zµ{¦¡¡C
  23.     Select Case Err.Number    ' Àˬd¿ù»~¥N½X¡C
  24.    
  25.         Case 424    ' µo¥Í¡u¦¹³B»Ý­nª«¥ó¡v¤§¿ù»~¡C
  26.             Set vD = CreateObject("Scripting.Dictionary") ' «Ø¥ßª«¥ó¡C
  27.             
  28.         Case Else   ' ¥i¥Î Err.number ¨ú±o¿ù»~¥N½X, ¥Î Err.Description ¨ú±o¿ù»~»¡©ú¤å¦r. Err.Clear ²M°£¿ù»~ºX¼Ð
  29.             MsgBox prompt:="¿ù»~¥N½X : " & Err.Number & Chr(10) & "¿ù»~­ì¦]:" & Err.Description, Buttons:=vbOK, Title:="µo¥Í¿ù»~"
  30.             Err.Clear
  31.             Exit Sub
  32.     End Select
  33.     Resume    ' ±Nµ{¦¡°õ¦æ¨BÆJ¦^¨ì­ìµo¥Í¿ù»~ªº³¯­z¦¡¤¤¡C
  34.    
  35. End Sub
½Æ»s¥N½X
  1. Private Sub CommandButton1_Click()
  2.   ChkFile
  3. End Sub
½Æ»s¥N½X
¾lÃþ±À.

ªí³æ³B²z¨t²Î3.2(PLS)-a2.zip (631.5 KB)

TOP

¦^´_ 9# chaoyiho
§Ú¨Ï¥Î DEBUG MODE Æ[¹î¡A·|²£¥Í§ä¤£¨ìª«¥óªº¨Æ¹ê¡A
¬G­×§ï¦¨¦p¤U¡G

¸Õ¸Õ¬Ý¡I

TOP

¦^´_ 9# chaoyiho

§A¦b¼Ò²Õ1 (Module1) ¥[¤J¤F Public vD
ªº«Å§i«á¡A¨Ã©ó Workbook_Open() ¸Ì
³]©w¤F  vD ªºÄÝ©Ê¡A°ò¥»¤W«K OK ¤F¡C
©¹«áµ{¦¡½X¤§°õ¦æ§¡¯à¦Û°Ê¿ë»{¥¦¤F¡C

TOP

  Public vD  as object
'
    Private Sub CommandButton1_Click()
        If Application.FindFile = False Then
            MsgBox "±z¨S¦³¶}±Ò¥ÀÀÉ"
        End If

        Dim lRow&
      
      if vD is nothing then  Set vD = CreateObject("Scripting.Dictionary")
        lRow = 3
        vD.RemoveAll
        While Cells(lRow, 1) <> ""
          If Not vD.Exists(CStr(Cells(lRow, 1))) Then
            EXCELªí³æ³B²z¤¶­±.ListBox1.AddItem CStr(Cells(lRow, 1))
            vD(CStr(Cells(lRow, 1))) = lRow
          End If
          lRow = lRow + 1
        Wend
    End Sub

TOP

¦^´_ 7# c_c_lai

ÁÂÁ«e½ú´£¿ô¡A§Ú¤@ª½³£¦³¥[¤J
¦ý¬OÁÙ¬O«ùÄò¥X²{§ä¤£¨ìª«¥ó(«ö¤U¤ÀªR¤§«á)
´N·|¸õ¥X¿ù»~424
¨ì©³«ç»ò·|³o¼Ë?(±Y¼ì)

TOP

¦^´_ 6# jackyq

«e½ú¦n¡A§Ú¦³¦b¼Ò²Õ1¸Ì­±¼g¤J«Å§iPublic vD

¦ý¬O¤@¥¹°õ¦æ¤ÀªR
¦ý¬OÁÙ¬O¥X²{»Ý­nª«¥ó
¯uªº¤£ª¾¹D«ç»ò¿ì Q_Q

TOP

¦^´_ 5# chaoyiho

TOP

¤j¤j¥i¯à ¦b module º|¼g   Public vD  ???

TOP

«e½ú±z¥i¯à¦b¦£ ©Ò¥H¨S¦³¿ìªkÀ°§Ú¸Ñµª..
¥i¬O§Ú¯uªº«Ü·Qª¾¹D!
¤£ª¾¹D¦³¨S¦³¤H¥i¥H´À§Ú¸Ñµª©O?

TOP

¦^´_ 3# luhpro
½Ð°Ý«e½ú
§Ú«ö·Ó±zªº«ü¥Ü¥h°µ½m²ß¤§«á
µo²{
¥LªºvD.RemoveAll±`±`³£·|¥X²{¿ù»~°T®§
"»Ý­nª«¥ó"©Î¬O"¥¼©w¸q"
¦ÓµLªk¹B¦æ
½Ð°Ý³o¼Ë¤l¬O­n«ç»ò¸Ñ¨M©O?
ÁٷнÐÀ°¦£!!

TOP

        ÀR«ä¦Û¦b : ¤@­Ó¤Hªº§Ö¼Ö¡D¤£¬O¦]¬°¥L¾Ö¦³±o¦h¡A¦Ó¬O¦]¬°¥L­p¸û±o¤Ö¡C
ªð¦^¦Cªí ¤W¤@¥DÃD