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

[µo°Ý] excel VBA ¦Û°Ê§ó·s¿z¿ï°ÝÃD

[µo°Ý] excel VBA ¦Û°Ê§ó·s¿z¿ï°ÝÃD

Dear all,

³Â·Ð¤j®aÀ°À°¦£
§Ú¦Û¤v°Ñ¦Òºô¸ô¤WªºVBA»yªk¼g¤F¤@¬q»yªk

·Qªk¬O¡G
1.AFÄæ¦ì¦³³]©w"¸ê®ÆÅçÃÒ¡G«Ý®Æ,«Ý¥Í²£,¥Í²£¤¤,¾÷¥x²§±`,µ²§å,¼È°±"


2.AFÄæ¦ì°_ªì³]©w¬O±N"µ²§å"ªº¿ï¶µ¤Ä¿ï¨ú®ø¡C
**** ¦¹®ÉAFÄæ¦ì¤U¨ÃµL¸ê®Æ¦³"¾÷¥x²§±`"

3.­YAFÄæ¦ì¤U¡A¿ï¾Ü"µ²§å"®É¡A¦¹®ÉVBA·|¦Û°Ê¿z¿ï±¼

4.¦ýAFÄæ¦ì¤U¡A¿ï¾Ü"¾÷¥x²§±`"®É¡Aµ²ªG¤]·|³QVBA·|¦Û°Ê¿z¿ï±¼

§Ú­n«ç»ò³]©wVBA°Ñ¼Æ
1.§Æ±æ¦bAFÄæ¦ì¦b°µ¿z¿ï®É¡A¤§«e¤Ä¿ï¨ú®ø¤§¶µ¥Ø·|¦Û°Ê³Q¿z¿ï±¼¡A
2.¦ý¤§«e¥¼ÂI¿ï¹Lªº¿ï¶µ¦p³]³Æ²§±`¡A§Æ±æ¤£­n³Q®Ø¿ï¨ú®ø¡C
error.gif

error.rar (21.16 KB)
Just do it.

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
   If .Column = 32 And .Row >= 2 And .Count = 1 Then
      If ActiveSheet.FilterMode = True Then
         If .Value <> "¾÷¥x²§±`" Then
            .Rows(.Count).EntireRow.Hidden = True
         End If
      End If
   End If
End With
End Sub

°Ñ¦Ò!
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 2# Andy2483
Dear Andy2483,
©êºp§Úªí¹Fªº¤£²M·¡¡A

1.¦bAFÄæ¦ì¦³³]©w"¸ê®ÆÅçÃÒ(¤U©Ô¦¡¿ï³æ)¡G«Ý®Æ,«Ý¥Í²£,¥Í²£¤¤,¾÷¥x²§±`,µ²§å,¼È°±"³o6­Ó¿ï¶µ
2.¦bAFÄæ¦ì¤U¥u¦³"«Ý®Æ,«Ý¥Í²£,¥Í²£¤¤,µ²§å"³o¨Ç¸ê°T
3.§Ú¦bAFÄæ¦ì¥Î¿z¿ïªº¤è¦¡¡A¥ý§â"µ²§å"³o¨ú®ø¤Ä¿ï±¼¡C
4.¦¹®É"µ²§å"Äæ¦ì·|³Q¦Û°ÊÁôÂñ¼¡C
5.³o®É§Ú¦bAFÄæ¦ì¤¤¡A­YÂI¿ï¤U©Ô¦¡¿ï³æ¿ï¾Ü"¾÷¥x²§±`"©Î"¼È°±"®É¡AVBA¤@¼Ë·|§â¥¦­Ìµ¹¤©¦Û°ÊÁôÂÃ

§Ú¿ý¤F¤@¬q¹Lµ{¡A·í§Ú¿ï¾Ü"«Ý®Æ"VBA¤@¼Ë·|§â¥¦­Ìµ¹¤©¦Û°ÊÁôÂÃ
111111111111111111111111.gif

§Úµo²{¤j·§¬O¦]¬°·í§Ú¦b°µ-->AFÄæ¦ì¥Î¿z¿ïªº¤è¦¡¡A¥ý§â"µ²§å"³o¨ú®ø¤Ä¿ï±¼®É¡C
¦¹®ÉAFÄæ¦ì¤U¥u¦³"¥Í²£¤¤,«Ý¥Í²£,¼È°±"³o3­Ó¿ï¶µ¡A

©Ò¥H·í§Ú¦bAF¿ï¾Ü°£¤F"¥Í²£¤¤,«Ý¥Í²£,¼È°±"³o3­Ó¿ï¶µ¥~ªº¸ê°T¡A°ò¥»¤W³£·|³QVBA¦Û°ÊÁôÂÃ

§Ú¬O·Q»¡¡A¦³¬Æ»ò¤è¦¡¬O¥i¥HÅýVBA¥u»{©w§Ú²Ä¤@¦¸¨ú®øªº¿ï¶µ¡A¦Ó¨ä¥L¿ï¶µ¥X¨Ó®É¡A¬OµL§@°Êªº
Just do it.

TOP

¥»©«³Ì«á¥Ñ n7822123 ©ó 2021-7-22 00:01 ½s¿è

¦^´_ 3# jsc0518

§Ú¬O·Q»¡¡A¦³¬Æ»ò¤è¦¡¬O¥i¥HÅýVBA¥u»{©w§Ú²Ä¤@¦¸¨ú®øªº¿ï¶µ¡A¦Ó¨ä¥L¿ï¶µ¥X¨Ó®É¡A¬OµL§@°Êªº

¿z¿ï±ø¥ó¤£·|¥h°O¿ý §A "¨ú®ø" ªº¡A¥u·|°O¿ý"²{¦³" ªº

¦pªG§A­ì¥»¦³ A¡BB¡BC ¡A3­Ó±ø¥ó¡A§A§âC¨ú®ø¤F¡AExcelªº¿z¿ï±ø¥ó·|¬ö¿ý¦¨ "­nA¡B¤]­nB"¡A¦Ó¤£¬O "¤£­nC"

¸ê®Æ¿z¿ïªº¥»·N=±q²{¦³ªº¸ê®Æ¥h¹LÂo

¦pªG¸ê®Æ¥u¦³A¡BB¡BC¡A´Nºâ¥ÎVBA¼g¿z¿ï±ø¥ó¡A¦h¤@­ÓD±ø¥ó¡AExcel¤]¬O¤£»{±bªº

©Ò¥H·í¸ê®Æ¦³ÅܰʮɡA¥u¯à¥ÎVBA "­«¼g±ø¥ó"

µ{¦¡¬O¨Ì»Ý¨D¼gªº¡A»Ý¨Dªí¹F¤£²M·¡
©ÎªÌ¨S¦³¤W¶Çªþ¥ó¡A·R²ö¯à§U

TOP

¦^´_ 3# jsc0518


2­Ó¥H¤U¿z¿ï¨ú®ø¶µ¦³®Ä
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
   Dim Qx$, Af&, Sc$, i&
   Af = 32
   Sc = ""
   Qx = ""
   If .Column = Af And .Row >= 2 And .Count = 1 Then
      If ActiveSheet.FilterMode = True Then
         For i = 2 To ActiveSheet.UsedRange.Rows.Count
            If Rows(i).EntireRow.Hidden = True Then
               If Sc = "" Then
                  Sc = Cells(i, "AF")
               End If
               If Qx = "" And Cells(i, "AF") <> Sc Then
                  Qx = Cells(i, "AF")
               End If
               If InStr(Sc & "," & Qx, Cells(i, "AF")) = 0 Then
                  GoTo 99
               End If
            End If
         Next
         Selection.AutoFilter Field:=Af, Criteria1:="<>" & Sc, Operator:=xlAnd, Criteria2:="<>" & Qx
         ActiveSheet.AutoFilter.ApplyFilter
         
99
      End If
   End If
End With
End Sub

°Ñ¦Ò!
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 5# Andy2483
Dear Andy2483,
¦­¦w¡I·PÁ±zªº¦^ÂСI
¸Õ¹L«á¥i¥H¨Ï¥Î¡A·P®¦¡I
¥i§_±Ð§Ú¤@¤UVBA»yªk¤j·§¤º®e¬O«ç»ò°µªº©O¡H
ÁÂÁ§A¡I¡I¡I
Just do it.

TOP

¦^´_ 4# n7822123
Dear n7822123,
¦­¦w±z¦n¡A·PÁ±zªº¦^ÂСAª¾¹DÅo¡I
Thank you.
Just do it.

TOP

¦^´_ 6# jsc0518


1.¦pªG¥i¥H¥Î! ¥Nªí¤è¦V¹ï¤F!
2.Andy¾Ç«Ü¤[¤F!¶i¨B«ÜºC!³o¬O¥Î¤g¤èªk«÷´ê¥X¨Óªº
2.1.¥u¬O¥Î°j°é§PÂ_¿z¿ï«áÁôÂäF¤°»ò¶µ¥Ø
2.2.¦pªG¿z¿ï«áÁôÂöW¹L¨â¶µ´N¤£¾A¥Î!
      ¦pªG¨â¶µ¥H¤U´N¥H¦Û­q¿z¿ïªº¤è¦¡¨ú¥N¨ú®ø¤Ä¿ïªº¿z¿ï
3.À³¸Ó¦³§ó°ª©úªº¤èªk! ½Ð°ª¤â«e½ú­Ì«ü¾É!
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 6# jsc0518


¿z¿ï1~5­Ó¶µ¥Ø§¡¾A¥Î
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
   Dim Qx$, Af&, Sh$, S1$, S2$, S3$, S4$, S5$, i&
   Af = 32
   Sh = ""
   S1 = ""
   S2 = ""
   S3 = ""
   S4 = ""
   S5 = ""
   If .Column = Af And .Row >= 2 And .Count = 1 Then
      If ActiveSheet.FilterMode = True Then
         For i = 2 To ActiveSheet.UsedRange.Rows.Count
            If Rows(i).EntireRow.Hidden = True Then
               If Sh = "" Then
                  Sh = Cells(i, "AF")
                  ElseIf InStr(Sh, Cells(i, "AF")) = 0 Then
                     Sh = Sh & "," & Cells(i, "AF")
               End If
               ElseIf InStr(Sh, Cells(i, "AF")) <> 0 Then
                  GoTo 999
               ElseIf S1 = "" Then
                  S1 = Cells(i, "AF")
               ElseIf S2 = "" And InStr(S1, Cells(i, "AF")) = 0 Then
                  S2 = Cells(i, "AF")
               ElseIf S3 = "" And InStr(S1 & S2, Cells(i, "AF")) = 0 Then
                  S3 = Cells(i, "AF")
               ElseIf S4 = "" And InStr(S1 & S2 & S3, Cells(i, "AF")) = 0 Then
                  S4 = Cells(i, "AF")
               ElseIf S5 = "" And InStr(S1 & S2 & S3 & S4, Cells(i, "AF")) = 0 Then
                  S5 = Cells(i, "AF")
                  Exit For
            End If
            
999
         Next
         If InStr(Sh, .Value) <> 0 Then
            .Rows(.Count).EntireRow.Hidden = True
            Else
               Selection.AutoFilter Field:=Af, Criteria1:=Array( _
                  S1, S2, S3, S4, S5), Operator:=xlFilterValues
               ActiveSheet.AutoFilter.ApplyFilter
         End If
      End If
   End If
End With
End Sub

°Ñ¦Ò!
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 8# Andy2483
½Ð°Ý¤@¤U¡A

If InStr(Sc & "," & Qx, Cells(i, "AF")) = 0 Then
GoTo 99 --> ³o¬O¬Æ»ò¥Î·N¡B·N«ä©O¡H
Just do it.

TOP

        ÀR«ä¦Û¦b : ¹D¼w¬O´£ª@¦Û§Úªº©ú¿O¡A¤£¸Ó¬O¨þ¥¸§O¤HªºÃ@¤l¡C
ªð¦^¦Cªí ¤W¤@¥DÃD