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

[¤À¨É] VBA¤À¨É-®ÄªGÆZÃþ¦üVLOOKUP¬d¸ß,¥u¬O¥i¥H¨âÄ椬¬d

§Ú¦n·Q¤U¸ü¨Ó¬Ý¬Ý¡A¥ú¬O¬Ý¥N½X¹ê¦b¬Ý¤£©ú¥Õ

TOP

¦^´_  infoverdad
¤£¿ùªº¤À¨É,¥t¥Î Find ¤èªk  ¤À¨É.
GBKEE µoªí©ó 2011-7-18 20:23


GBKEEª©¤j¦n
¤p§Ì¬O­è¶}©l¦Û¾Çvbaªºªì¤ßªÌ¡A¬Ý¨ì³o¼ÒÀÀvlookupªºµ{¦¡«Ü·Q¾Ç²ß¡C
¥Ñ©óµù¥U½×¾Â¤]¨S¦h¤[¡A©Ò¥H¨S¿ìªk¤U¸üinfoverdad¤j¤jªºªþ¥ó¡C
¥u¦n¬Ý±z¼gªºµ{¦¡¨Ó´¢¼¯¡A¥u¬Oê©ó§Ú¬Oªì¤ßªÌ¡A¨ä¹ê¤]®Ú¥»¬Ý¤£À´§A¦b¼g¤°»ò¡C
«á¨Ó§Ú¥u¦n¤@¥y¤@¥yªº¥ÎF1ºCºC¬d¡AµM«á¦A¬Ýinfoverdad¤j¤j¶Kªº¹Ï¡A¥Î½M²qªº¤è¦¡°µ¥X¨º¤@­Ó¤u§@ªí¡C
§Ú¤£½T©w§Ú°µªº¹ï¤£¹ï¡A¦Ü¤Ö¯àµo´§¸òinfoverdad¤j¤j»¡ªºÃþ¦üvlookup¬d¸ß¥\¯àªº®ÄªG¡C

¥H¤U¡A·Q½Ð±zÀ°§Ú¬Ý¬Ý§Ú°µªº¹ï¤£¹ï¡A§Ú¬Oª½±µ¶K¤W±zªºµ{¦¡¡AµM«áµe¥X¨Óªº¤u§@ªí¡C


¤j·§´N¬O¹Ï¤¤ªº¤u§@ªí¶K¤W±zªºµ{¦¡¥i¥H¥¿±`¹B§@¡C

¦ý­«ÂI¬O§Ú¤j·§ª¾¹Dµ{¦¡¤¤¨C¤@¦Cªº§@¥Î¡A¦ý§Ú¤£À´¨C¤@¥y¹ê»Ú¤Wªº¥Îªk¡C
©Ò¥H·Q½Ð±Ð±z¡A¤£¾å±o±z¯à¤£¯à¥Î¥Õ¸Ü¤@ÂIªº¤è¦¡¬°§Ú¸ÑÄÀ¤@¤U¡AÁÂÁÂ~~

Private Sub Worksheet_Change(ByVal Target As Range)  '³o¤@¥y¬O¤£¬O·ítargetªºÀx¦s®æ¦³Åܰʪº®É­Ô´NÅýsub¤ºªºµ{¦¡°õ¦æ? ¥u¬O¬°¤°»ò³o­Ósub¥²¶·¥[¤Wprivate?

    Dim wsLists As Worksheet, Rng As Range 'dim§Ú½®Ñª¾¹D¤j·§¬O«Å§iªº·N«ä§a¡A©Ò¥H¾ã¥yªº·N«ä¬O«Å§iwsLists¬O¤u§@ªí¡Arng¬O½d³ò?

    If Target.Count > 1 Then Exit Sub '³o¥y´N¬O§Ú¹J¨ì²Ä¤@­Ó¤£·|ªº¤F¡Aifªº³¡¤À¨S¤°»ò°ÝÃD¡Atarget¸òExit Sub§Ú¤]¾å±o¡A¥u¬OCount¬O¤°»ò·N«ä°Ú?§Ú·d¤£²M·¡Count¡A¥ÎF1ªº»¡©ú§Ú¹ê¦b¤]¬Ý¤£À´@@

    Set wsLists = Worksheets("Lists") '³o­Ó¬O§âLists³o­Ósheet«ü©wµ¹wsLists

    Application.EnableEvents = False '³o¥y§Úgoogle¤F¦n¤[¡A¥bª¾¥b¸Ñ¡A¬O¤£¬O«üfalseªº®É­Ô¥ý°±¤î³o¬qµ{¦¡ªº¹B§@¡Aµ¥³QApplication.EnableEvents = False¸òtrue¥]°_¨Óªº³o¬qµ{¦¡½T¹ê¶]§¹¡AApplication.EnableEvents Åܦ¨true¡Aµ{¦¡¤~·|½T¹ê°õ¦æ?

    If Target.Column = 2 Then '³o¬O«ütargetªº¦æ¼Æ=2´Nthen

        Set Rng = wsLists.Range("A:A").Find(Target, LookAt:=xlWhole, MatchCase:=True) '³o­Ó¬O¥Îfind¶}©l¬d¸ß¤F¡A«ü©wµ¹rng¡A¥u¬O§Ú¤£À´lookat:=xlWhole¬O¤°»ò·N«ä¡AF1ªº»¡©ú¤]¨S¦³¯S§O»¡©úxlWhole¬O¦b·F¹À¡AMatchCase:=True¬O§â¤j¤p¼g¤]¦C¤J§PÂ_±ø¥ó¸Ì§a?
      
          With Target.Offset(0, 1) '³oÃä¬OÅýtargetªºµ²ªG©¹¥kÄƤ@®æ¡A¥u¬O§Ú¤£À´¬°¤°»ò­n¥Îwith

            If Not Rng Is Nothing Then .Value = Rng.Offset(0, 1).Value Else .Value = ""  'Not Rng Is Nothing¡A§Ú·Q¤F«Ü¤[¡A©Ò¥HÀ³¸Ó¬O­t­t±o¥¿ªº·N«ä?

¤U­±ªºªF¦è´N¬O¦A­«½Æ¤@¦¸¥u¬O¤è¦V¤£¦P¹ï§a?

        End With
    ElseIf Target.Column = 3 Then
        Set Rng = wsLists.Range("B:B").Find(Target, LookAt:=xlWhole, MatchCase:=True)
        With Target.Offset(0, -1)
            If Not Rng Is Nothing Then .Value = Rng.Offset(0, -1).Value Else .Value = ""
        End With
    End If
    Application.EnableEvents = True
End Sub

¥H¤W¡A§Ú°Ýªº¤è¦¡«ÜµL¸£¡A¦]¬°§Ú¹ïVBA¹ê¦b¬O¨S¤°»ò°ò¦¥i¨¥¡C
¤£¹L§Ú¬O¯uªº«Ü·Q¾Ç¡A¦pªGGBKEEª©¤j¤£¶û³Â·Ðªº¸Ü¡AÁٽбzÀ°§Ú¸Ñ´b¤@¤U¡C
½ÐºÉ¥i¯à¥Õ¸Ü¤@ÂI¡AF1ªº»¡©ú¦³ªº³¡¥÷§Ú¬Ý±o«Ü¼Ò½k.......
ÁÂÁÂ~~(¸÷)

TOP

¦^´_ 18# GBKEE


    ·PÁÂGBKEEª©¤jªº¤À¨É
©Ò¥HCount´N¬O­pºâÀx¦s®æªº¼Æ¶q
¥i¬O³o¼Ë¤p§Ì¤S¦h¤F´X­ÓºÃ°Ý¡A¤£¾å±oGBKEEª©¤j¬O§_Ä@·N¸Ñ´b

1. ¦b±zfind¤èªk¤º¬O¼gif Target.Count > 1 Then Exit sub
    ½Ð°Ý¬O¦b¤°»ò±¡ªp¤§¤UCount¤~·|¤p©ó1©O? ³o¼Ë¼g¬O¬°¤FÁקK¤°»ò±¡ªpµo¥Í©O?

2. ¦b°õ¦æ¹L±z¤W­±¤À¨ÉªºEx¤§«á¡A§Ú¸ÕµÛ¶Ã§ï¸Ì­±ªºµ{¦¡¬Ý¦³¤°»ò®ÄªG¡C
    µM«á§Ú§ï¦¨
   Private Sub Worksheet_Change(ByVal Target As Range)

      if  Target.Count < 1 Then

          MsgBox Target.Count
   
      End If

   End Sub
§Ú¥D­n¬O·Q¸Õ¸Õ¬Ý­×§ï¦¨±z¦bfind¤èªk¸Ì­±ªº¥Îªk·|¦³¤°»ò®ÄªG
µ²ªG§Úµo²{<1ªº®É­Ô§Y«K§Ú¿ï¾Ü¨â­Ó¥H¤WªºÀx¦s®æ¤]¤£·|°õ¦æMsgBox
°£«D¬O¼g¦¨=1¡A³o¼Ë¿ï¾Ü¤@­ÓÀx¦s®æªº®É­Ô¥i¥H¥¿±`ªº°õ¦æMsgBox
¦pªG¼g¦¨<=1©Î>=1ªº®É­Ô¡A¤]¥u¦³¦b¿ï¾Ü¤@­ÓÀx¦s®æªº®É­Ô¤~¯à¥¿±`°õ¦æMsgBox
½Ð°Ý³o¬O¬°¤°»ò©O?
¼g¦¨<1ªº®É­Ô¤£¬O¸Ó¥Nªí§Ú¿ï¾Ü¤@­Ó¥H¤WªºÀx¦s®æ®É¡A´N¯àÅã¥Ü¥¿±`ªºµ²ªG¶Ü?

3. ±z¦bEx³o¬qµ{¦¡¤¤¥Î¨ì¤FOption Explicit
    §Ú¥ÎF1»¡©ú¬d¨ìªº¬O»¡Option Explicit¬O¥Î¨Ó±j¨î¨C­ÓÅܼƳ£¤@©w­n«Å§i
    ¬°¤°»ò±z¦bEx¤¤­n¯S§O¥[¤J³o¤@¬q©O?
    §Ú¸ÕµÛ§âOption Explicit§R°£¡A¤]¬O¯à°÷¥¿±`¹B§@¡A¨º¥[¤J³o¤@¬qªº¥Î·N¬O¤°»ò©O?

¤p§Ì¾|¶w¡A§Æ±æGBKEEª©¤j¯à¤£§[½ç±Ð~~~~~ÁÂÁÂ~~

TOP

¦^´_ 22# GBKEE


    ·PÁÂGKBEEª©¤jªº¸Ñµª~~
©¿µMı±o¦Û¤v¦nÄø¡A­ì¨Ó§Ú°Ý°ÝÃDªº¤è¦V¿ù¤F¡A¦]¬°§Ú§¹¥þ¬Ý¿ù¤F¡C
¤j·§¬O¬Ý¤Ó¤[¬Ý¨ì²´³£ªá¤F¡A§Ú¤@ª½¥H¬°±z¬O¼g If Target.Count < 1  @@
©Ò¥H§Ú¤~·|¤@ª½¥H¬°¬O¬°¤FÁקK¥X²{Count¤p©ó1ªºª¬ªpµo¥Í¡A­ì¨Ó®Ú¥»¤£¥i¯à·|¦³Count<1ªº±¡ªp....
¯uªº¬O«Ü©êºp~~:P

§Ú¤§«e¦³¸Õ¹L¦bfind¤èªk¤¤§â If Target.Count > 1 Then Exit Sub®³±¼´ú¸Õ¡A¥i¬O°»¿ùªº¥\¯à¨S¦³ªý¤î§Ú¡A¾ã­Óµ{¦¡ÁÙ¬O°õ¦æªº«Ü¶}¤ß¡A¥\¯à¤]³£¥¿±`¡C
©Ò¥H§Ú¤~·d¤£À´¨º¤@¬q¨ì©³¬O¤°»ò·N«ä~~~
¤Ï­Ë¬O§â Application.EnableEvents = False¸ò Application.EnableEvents = true®³±¼¡A¾ã­Ó´N¶}©l¼É¨«
§Ú·í¤U¤â¨¬µL±¹¡AÁÙ¦n«ö¤UEsc´N°±¤î¤F

³o¼Ë§Ú´N©ú¥Õ¤F¡ACount > 1¬O«ü¦Ü¤Ö¿ï¾Ü¤@­Ó¥H¤WªºÀx¦s®æ
¦pªG¬O³o¼Ëªº¸Ü¡A±zfind¤èªk¤º¼gªº¬O If Target.Count > 1 Then Exit Sub
¥i¬OExit Sub¤£¬O«üÂ÷¶}³o­Ó¨Æ¥ó¶Ü?  ³o¼Ë¾ã¥y¸ÑÄÀ¤U¨Ó¤£´N¬Oµ¥©ó¿ï¾Ü¦Ü¤Ö¤@­Ó¥H¤WªºÀx¦s®æ´NÂ÷¶}³o­Ó¨Æ¥ó?
ÁÙ¬O§Ú²z¸Ñ¿ù»~©O?
·Q¦A¨D¸Ñ¤@¤U~~
¥H¤W¡A¦A¦¸·PÁÂGBKEEª©¤jªÖ¶O¤ß¬°§Ú¸Ñ´b~~

TOP

        ÀR«ä¦Û¦b : ¯¸¦b¥b¸ô¡A¤ñ¨«¨ì¥Ø¼Ð§ó¨¯­W¡C
ªð¦^¦Cªí ¤W¤@¥DÃD