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

VBA¦p¦ó±N¤£¦P¸ê®Æªº°Ï°ì§ì¥X¤ÀÃþ?

¦^´_ 1# handsometrowa
¸ê®Æ°Ï°ì Åܦ¨¬õ¦âªº¦r¼Ë ,¿ý»s¥¨¶°¸Õ¸Õ¬Ý
  1. Option Explicit
  2. Dim Rng As Range, AR()
  3. Sub Main()
  4.     AR = Array("¨ì´Á¤ë¥÷", "¼i¬ù»ù", "¶R½æÅv", "¦¨¥æ¶q", "¥¼¨R¾P«´¬ù¶q")
  5.     With Sheets("¿ï¾ÜÅvÁ`ªí")
  6.         .[L4:M4] = Array("¦¨¥æ¶q", "¥¼¨R¾P«´¬ù¶q")         '"*¦¨¥æ¶q" ,"*¥¼¨R¾P'¸ê®Æ®wÄæ"*" ¶i¶¥¿z¿ï¦³·|¦³¿ù»~
  7.         Set Rng = .Range("B4:Q" & .[B4].End(xlDown).Row)   '¸ê®Æ®w
  8.         ¿z¿ïµ{¦¡ "¤ÀÃþ¤@"
  9.         ¿z¿ïµ{¦¡ "½æÅv"
  10.         ¿z¿ïµ{¦¡ "¶RÅv"
  11.         .Activate
  12.     End With
  13. End Sub
  14. Private Sub ¿z¿ïµ{¦¡(Sh As String)                  'SH°Ñ¼Æ¬°¦r¦ê«¬ºA :¤u§@ªí¦WºÙ
  15.     Dim T As String
  16.     With Sheets(Sh)
  17.         .Cells.Clear                                'Àx¦s®æ:²M°£
  18.         .[L1].Value = AR(0)                         '¶i¶¥¿z¿ï: CriteriaRange,·Ç«hÄæ¦ì¦WºÙ("¨ì´Á¤ë¥÷")
  19.         .[A1:E1].Value = AR                         '¶i¶¥¿z¿ï: CopyToRange,½Æ»s¨ìÀx¦s®æªºÄæ¦ì¦WºÙ
  20.         
  21.         If Sh = "½æÅv" Or Sh = "¶RÅv" Then
  22.             .[L1].Value = AR(2)                     '¶i¶¥¿z¿ï: CriteriaRange,·Ç«hÄæ¦ì¦WºÙ("¶R½æÅv")
  23.             .[L2] = IIf(Sh = "¶RÅv", "Call", "Put") '¶i¶¥¿z¿ï:·Ç«hÄæ¦ì ³]¥ß±ø¥ó
  24.         End If
  25.         Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.[L1:L2], CopyToRange:=.[A1:E1], Unique:=True
  26.         .[L1:L2] = ""                                'Unique:=True ¶È¿z¿ï°ß¤@ªº°O¿ý
  27.          If Sh <> "½æÅv" And Sh <> "¶RÅv" Then
  28.             .Rows(2).Delete                          '¸ê®Æ®w²Ä2¦C¬° (¶g§O) ¤£»Ý­n§R±¼
  29.         Else
  30.             ¤ë¥÷«´¬ù¿z¿ïµ{¦¡ Sh
  31.         End If
  32.     End With
  33. End Sub
  34. Private Sub ¤ë¥÷«´¬ù¿z¿ïµ{¦¡(Sh As String)
  35.     Dim R As Range
  36.     On Error GoTo ER:                               'µ{¦¡¿ù»~³B¸Ì:¤ë¥÷«´¬ù¶RÅvªº¤u§@ªí,¦p¤£¦s¦b·|¦³¿ù»~.
  37.     With Sheets(Sh)
  38.         .Range("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Cells(1, .Columns.Count), Unique:=True
  39.         '¿z¿ï [¨ì´Á¤ë¥÷]¦b¤u§@ªí³Ì¥kºÝªºÄæ¦ì
  40.         For Each R In .Range(.Cells(2, .Columns.Count), .Cells(2, .Columns.Count).End(xlDown))  '³Ì¥kºÝªºÄæ¦ìªº[¨ì´Á¤ë¥÷]
  41.             .Range("A1").AutoFilter Field:=1, Criteria1:=R     '¦Û°Ê¿z¿ï: AÄæ ·Ç«h= [¨ì´Á¤ë¥÷]
  42.             .Range("A:E").Copy Sheets(R & Sh).[A1]             '¤£²Å¦X·Ç«hªº¸ê®Æ·|ÁôÂñ¼
  43.         Next
  44.     End With
  45.     Exit Sub                                                   'Â÷¶}³oµ{§Ç
  46. ER:
  47.     If Err.Number = 9 Then                                      '¤ë¥÷«´¬ù¶RÅvªº¤u§@ªí
  48.         Sheets.Add Sheets(Sheets.Count)                         '·s¼W¤u§@ªí
  49.         ActiveSheet.Name = R & Sh                               '¤u§@ªí:©R¦W
  50.         Resume                                                  '¦^¨ìµ{¦¡¿ù»~ÂI
  51.     End If
  52.     MsgBox Err.Description & Err.Number                         '§iª¾:¤£¬O¤u§@ªí¤£¦s¦b·|¦³¿ù»~.
  53. End Sub
½Æ»s¥N½X
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

¦^´_ 3# handsometrowa
¤£­n³à®ð,§Ú¦³³o¯à¤O¬°§A¸Ñµª,¬O¶O¤F«Ü¦h®É¶¡©Ò¿i½m¥X¨Óªº.
¦³°ÝÃDÅwªï´£°Ý,¦h¬Ý,¦h½m²ß½d¨Ò,·|¶i¨Bªº

Sub Main()  
«Ø¥ß¸ê®Æ®w½d³ò   

Sub ¿z¿ïµ{¦¡(Sh As String)  
¨Ì¶Ç°eªº°Ñ¼ÆSh(¤u§@ªí¦WºÙ)«ü©w¨ì¤u§@ªíª«¥ó: With Sheets(Sh)
­×­q¶i¶¥¿z¿ï, CriteriaRange[¿z¿ï·Ç«h],Äæ¦ì¦WºÙ( "¨ì´Á¤ë¥÷","¶R½æÅv" ),
                                     [¿z¿ï·Ç«h],Äæ¦ì ³]¥ß±ø¥ó .[L2] = IIf(Sh = "¶RÅv", "Call", "Put")

Sub ¤ë¥÷«´¬ù¿z¿ïµ{¦¡(Sh As String)
¨Ì·ÓSh="½æÅv"©Î¬OSh="¶RÅv",·s¼W¦P¤@¤ë¥÷ªº«´¬ùªº¤u§@ªí
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

¥»©«³Ì«á¥Ñ GBKEE ©ó 2013-6-5 17:21 ½s¿è

¦^´_ 6# handsometrowa
*¦¨¥æ¶q        *¥¼¨R¾P ->  ¸ê®Æ®wÄæ¦ì¦WºÙ¤£¥i¥H¦³ * ,·|³y¦¨¶i¶¥¿z¿ï¤£¯à°õ¦æ·|¦³¿ù»~.
.[L4:M4] = Array("¦¨¥æ¶q", "¥¼¨R¾P«´¬ù¶q")  
µ¥¦P
  1. .[L4] ="¦¨¥æ¶q"
  2. .[M4]= "¥¼¨R¾P«´¬ù¶q")
½Æ»s¥N½X
¿z¿ïµ{¦¡ "¤ÀÃþ¤@"  '©I¥s  ¿z¿ïµ{¦¡ ³oµ{§Ç ¨Ã¥B¶Ç°e°Ñ¼Æ«¬ºA¬°"¦r¦ê"      
¿z¿ïµ{¦¡ "½æÅv"              
¿z¿ïµ{¦¡ "¶RÅv"


Private Sub ¿z¿ïµ{¦¡(Sh As String)
              'µ{¦¡±µ¦¬ªº(Sh)°Ñ¼Æ(String)«¬ºA¬°"¦r¦ê"
  With Sheets(Sh)  ->   Sheets("¤ÀÃþ¤@")
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

¥»©«³Ì«á¥Ñ GBKEE ©ó 2013-6-7 15:56 ½s¿è

¦^´_ 8# handsometrowa
¸ò¤@¶}©l³¯­z°}¦CÅܼƨº¤­­Óªº¦WºÙ¨S¦³Ãö«Yªº
*¦¨¥æ¶q        *¥¼¨R¾P ->  ¸ê®Æ®wÄæ¦ì¦WºÙ¤£¥i¥H¦³ * ,¥h±¼*ªº§@¥Î¦Ó¤w.
1#»¡:§Ú·Q­n§ì¨ú¤@¥÷¸ê®Æ  ²Ä¤@­Ósheet ¬OÁ`ªí(·|ÀHºô­¶§ó·s§ì¸ê®Æ)
¦p¦ó¨Ï¥ÎVBA ±N¥L¤ÀÃþÅܦ¨ sheet2 . 3 .4 ªº¤ÀÃþ©O?  

§Ú¥Î¤F [¶i¶¥¿z¿ï]ªº¤èªk
  1. AdvancedFilter ¤èªk [¶i¶¥¿z¿ï]
  2. ½Ð°Ñ¾\®M¥Î¦Ü½d¨Ò¯S©w°ò©ó·Ç«h½d³ò±q¸ê®Æ²M³æ¤¤¿z¿ï©Î½Æ»s¸ê®Æ¡C¦pªGªì©l¿ï©w¬°³æ­ÓÀx¦s®æ¡A«h¨Ï¥ÎÀx¦s®æ¥Ø«eªº°Ï°ìx¬°Variant¡C
  3. expression.AdvancedFilter(Action, CriteriaRange, CopyToRange, Unique)
  4. expression      ¥²¿ï¡C¸Ó¹Bºâ¦¡·|¶Ç¦^ [®M¥Î©ó] ²M³æ¤¤ªº¨ä¤¤¤@­Óª«¥ó¡C
  5. Action     ¥²¿ïªº XlFilterAction ¸ê®ÆÃþ«¬¡C
  6. XlFilterAction ¥i¥H¬O³o¨Ç XlFilterAction ±`¼Æ¤§¤@¡CxlFilterCopy ,xlFilterInPlace.
  7. CriteriaRange     ¿ï¾Ü©Êªº Variant¡C·Ç«h½d³ò¡C¦pªG¬Ù²¤¦¹¤Þ¼Æ«hµL·Ç«h¡C
  8. CopyToRange     ¿ï¾Ü©Êªº Variant¡C¦pªG Action ¬° xlFilterCopy¡A¦¹¤Þ¼Æ«ü©w³Q½Æ»s¦Cªº¥Ø¼Ð½d³ò¡C§_«h©¿²¤¦¹¤Þ¼Æ¡C
  9. Unique     ¿ï¾Ü©Êªº Variant¡C­Y¬° True¡A«h¶È¿z¿ï°ß¤@ªº°O¿ý¡F­Y¬° False¡A«h¿z¿ï¥X©Ò¦³²Å¦X·Ç«hªº°O¿ý¡C¹w³]­È¬° False¡C
½Æ»s¥N½X
[¿ï¾ÜÅvÁ`ªí] ¬°¸ê®Æ®w¥H¤U¬°¥¦ªºÄæ¦ì¦WºÙ
«´¬ù        ¨ì´Á¤ë¥÷        ¼i¬ù»ù        ¶R½æÅv        ¶}½L»ù        ³Ì°ª»ù        ³Ì§C»ù        ³Ì«á        µ²ºâ»ù        º¦¶^»ù        º¦¶^%        *¦¨¥æ¶q        *¥¼¨R¾P        ³Ì«á³Ì¨Î¶R»ù        ³Ì«á³Ì¨Î½æ»ù        ¾ú¥v³Ì°ª»ù        ¾ú¥v³Ì§C»ù

[¿ï¾ÜÅvÁ`ªí]¤¤«ü©w­n¿z¿ïªºÄæ¦ì,¥Î AR = Array("¨ì´Á¤ë¥÷", "¼i¬ù»ù", "¶R½æÅv", "¦¨¥æ¶q", "¥¼¨R¾P«´¬ù¶q") ,¤@¦¸ªº½Æ»s¨ì
sheet2 . 3 .4 ¤¤,«K©óAdvancedFilterªº¿z¿ï.
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

        ÀR«ä¦Û¦b : ¥ÌÄ@°µ¡BÅw³ß¨ü¡C
ªð¦^¦Cªí ¤W¤@¥DÃD