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

[µo°Ý] VBA ²¾°ÊÀx¦s®æ¦ì¸m¡A¥t¦s·sÀɤΧR°£

¤j®a¦n¡A§Ú²Ä¤@¦¸µo©«¡A¦pªG¦³¤°»ò¤£¹ïªº½Ð¨£½Ì
¦]¬°¨C¤ë³£­n¤W¥æ¤ëµ²³øªí¡A¤£·Q¦A°Å°Å¶K¶K¡A©Ò¥H¦b¹Á¸Õ¥Î ...
lovenice831 µoªí©ó 2020-12-11 15:23


§Ú§â Module2 §R±¼,
¨Ã§â©Ò¦³ªºµ{¦¡³£¶°¤¤¦bModule1¤F :
  1.   Public iI% ' ¾ã­ÓÀɮפº³£¥i¦@¥ÎªºÅܼƩΪ«¥ó¨Ï¥ÎPublic«Å§i©ó¦¹,
  2.   Public lRows&
  3.   Public wsTar As Worksheet, wsSou(1 To 2) As Worksheet ' ­«½Æ©Ê§@·~§Q¥Îª«¥ó°}¦C»P°j°é§¹¦¨

  4. Sub Auto_Open() ' ¶}±Ò¬¡­¶Ã¯®É·|¦Û°Ê°õ¦æ, ¥i©ñ¸m·|¦@¥Î»Ý¥ýªì©l¤Æªº«ü¥O
  5.   Set wsTar = Worksheets("¤ëµ²") ' ³]©w¤u§@ªíª«¥óÅܼÆ
  6.   Set wsSou(1) = Worksheets("¤u§@ªí1")
  7.   Set wsSou(2) = Worksheets("¤u§@ªí2")
  8. End Sub

  9. Sub ¤ëµ²_Click()
  10.   With wsTar
  11.     lRows = .Cells(Rows.Count, 1).End(xlUp).Row ' ±q¤U©¹¤W§ä¨ì³Ì©³¤U¤@¦Cªº¦C¸¹
  12.     If lRows < 3 Then lRows = 3 ' ³Ì¤p¬°3, ÁקK§R±¼¼ÐÃD
  13.     .Range(.[A3], .Cells(lRows, 3)).Clear ' ²M°£¤W¦¸²£¥Íªº¸ê®Æ, ¥H«K²£¥Í·s¸ê®Æ
  14.   End With
  15.   
  16.   For iI = 1 To 2 ' ¹ï¨â­Ó¤u§@ªí³v­Ó¨ú¥X»Ý­nªº¸ê®Æ°µ³B²z
  17.     With wsSou(iI)
  18.       .Select ' ©³¤U§@¥ÎÀx¦s®æ²¾¨ìAÄæ³Ì·s¸ê®Æ¦C«e,»Ý¥ý±N¤u§@ªíSelect
  19.       .[A3].AutoFilter Field:=2, Criteria1:="¥xÆW"
  20.       .Range(.[A3], .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 3)).Copy wsTar.Cells(Rows.Count, 1).End(xlUp).Offset(1)
  21.          ' «þ¨©»Ý­nªº¸ê®Æ, ¶K¨ì¤ëµ²¤u§@ªíªº¸ê®Æ³Ì·s¦C
  22.       .[A3].AutoFilter Field:=2
  23.       .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1).Offset(1).Select ' §@¥ÎÀx¦s®æ²¾¨ìAÄæ³Ì·s¸ê®Æ¦C-AÄæ±q¤U©¹¤Wºâ³Ì©³¤U¤@¦Cªº¤U¤è¨º®æ
  24.     End With
  25.   Next
  26.   wsTar.Select ' Åã¥Ü¤ëµ²¤u§@ªí
  27. End Sub

  28. Sub test_()
  29.   Dim Vsha
  30.   Dim wsNew As Worksheet, wsTemp As Worksheet
  31.    
  32.     With Workbooks.Add
  33.       Set wsTemp = .ActiveSheet
  34.       wsTar.Copy before:=.Worksheets(1)
  35.       Set wsNew = .ActiveSheet
  36.       wsTemp.Delete
  37.       Set wsTemp = Nothing
  38.       With wsNew
  39.         .name = .[11]
  40.         For Each Vsha In .Shapes
  41.           Vsha.Delete
  42.         Next
  43.         .Parent.SaveAs ThisWorkbook.Path & Application.PathSeparator & .name
  44.       End With

  45.       .Close False
  46.     End With
  47. End Sub
½Æ»s¥N½X
test save&clear-a.zip (22.04 KB)

TOP

¦^´_  ­ã´£³¡ªL
ÁÂÁÂÀ°¦£¡A¦ý§Ú¤£ª¾¥X²{¤°»ò°ÝÃD¡A¸ÕµÛ¸ÕµÛ¡A²{¦b¥þ³£¥Î¤£¨ì¡A³Â·ÐÀ°¦£¬d¬Ý¤@¤U¡AÁÂÁÂ
...
lovenice831 µoªí©ó 2020-12-26 20:13

Monthlyµ{¦¡.jpg

.[c8].AutoFilter Field:=1, Criteria1:=xS.[j2]

¸Õ¸Õ¬Ý...

TOP

¥»©«³Ì«á¥Ñ luhpro ©ó 2020-12-28 21:43 ½s¿è
¦^´_  ­ã´£³¡ªL

¤£¦n·N«ä¡A§ÚÂà¾×¤F¨Ã¦A¤W¶Ç¡A³Â·Ð¤F
lovenice831 µoªí©ó 2020-12-28 10:49

§Úı±o§Aªºµ{¦¡°ÝÃDÀ³¸Ó¤£¦b¨º¸Ì³á.

¥H¤U¬Oµ{¦¡¤º®e:
  1. Sub Monthly()
  2. Dim xS As Worksheet, T$, i&, xE As Range
  3. Call clean
  4. Set xS = Sheets("Monthly")
  5. If xS.[j2] = "" Then MsgBox "please choose!  ": Exit Sub
  6. For i = 1 To 3
  7.     With Sheets(1)
  8.          If .FilterMode Then .ShowAllData
  9.          .[c8].AutoFilter Field:=1, Criteria1:=xS.[j2]
  10.           Set xE = xS.Cells(Rows.Count, 1).End(xlUp)(5)
  11.          .AutoFilter.Range.Offset(1, 2).Resize(, 30).Copy xE
  12.          .ShowAllData
  13.          End With
  14. Next i
  15. End Sub
½Æ»s¥N½X
§Ú·Q°ÝÃDÀ³¸Ó¦b©ó :
.[c8].AutoFilter Field:=1, Criteria1:=xS.[j2] «á­±ªº Criteria1:=xS.[j2],
§Aªº¿z¿ïÁä­È³£¬O¬Û¦Pªº(¦]¬°xSªº[j2]ªº­È¤£·|ÅÜ,¦bµ{¦¡¤¤³o®æ¤l¤ºªº­È¥²¶·¥ÑUser¤â°Ê°µÅܧó)
·íªì´N¤£¤Ó¤F¸Ñ§A3­Ó°j°é«ç»ò³£¬O§ì¬Û¦Pªº¸ê®Æ?

²{¦b¨Ì§Aªº±Ô­z,
§Ú·Q§A§ï¦¨³o¼Ë¸Õ¸Õ:
Dim xS As Worksheet, T$, i&, xE As Range, vPro()
vPro = Array("A", "B", "C")

......
For i =  0 To 2
......
.[c8].AutoFilter Field:=1, Criteria1:=vPro(i)

TOP

        ÀR«ä¦Û¦b : ¤Hªº²´·úªø¦b«e­±¡A¥u¬Ý¨ì§O¤Hªº¯ÊÂI¡Aµ·²@¬Ý¤£¨ì¦Û¤vªº¯ÊÂI¡C
ªð¦^¦Cªí ¤W¤@¥DÃD