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

[µo°Ý] VBA loop and select case°ÝÃD (HELP)

[µo°Ý] VBA loop and select case°ÝÃD (HELP)

ªí®æ(OrderForm)¸ê®Æ·|¦Û°ÊÂಾ¨ìOrderData sheet
¦bªí®æ¤¤ªºCase type ¬Odrop down list ¦³Red, White,Mixed
½Ð°Ý¤@¤U¦p¦ó¥OQuantity®Ú¾Ú«e­±ªºCase type Âಾ¨ìOrderData sheet
¦]¬°ªí®æ¸ê®Æ²{¦b¥u·|¶¶§Ç¦aÂಾ¨ì¤u§@ªí
¦pªGcase type ùتº¿ï¶µ¤£¦P¤F¡A¨º¤£·|match ¤u§@ªí¤¤ªºredno, white no, mixed no ªº¼Æ¥Ø
¥i¯à§Úªºªí¹F¤£²M·¡¡A¦ý½Ð°ª¤âÀ°¦£
³o¥÷excel¬O¤j¾Çªºassignment




CT5002 14-15-001CaneyScopelLiu2.zip (38.83 KB)
  1. Sub TransferDetails()
  2. '
  3. ' TransferDetails Macro
  4. ' This Macro will make a record of the current details in the order form.
  5. '
  6. ' Keyboard Shortcut: Ctrl+Shift+T
  7. '
  8.    
  9.    

  10.     Sheets("OrderData").Select
  11.    
  12. 'This IF statement will determine whether or not there is a value in the first row of the database and will paste the data accordingly
  13.    
  14.     If IsEmpty(ActiveSheet.Range("A2")) Then
  15.    
  16.     Range("A2").Select
  17.    
  18.     Else
  19.    
  20.     Sheets("OrderForm").Select
  21.     Sheets("OrderData").Select
  22.     Range("A1").Select
  23.     Selection.End(xlDown).Select
  24.     ActiveCell.Offset(1, 0).Range("A1").Select
  25.    
  26.     End If
  27.    
  28.     Sheets("OrderForm").Select
  29.         Range("D14").Select
  30.             Selection.Copy
  31.         Sheets("OrderData").Select
  32.             Selection.PasteSpecial Paste:=xlPasteValues
  33.             ActiveCell.Offset(0, 1).Range("A1").Select
  34.             
  35. ' Forloop starts here

  36. Sheets("OrderForm").Select
  37.    
  38. Dim Winetype As Integer
  39. Dim RWM As String


  40. RWM = ("RWM")

  41.     For Winetype = 1 To 3

  42. ' LOOP ONE

  43. ' This section places the Wine Type Into the RWM Cell for referencing
  44. ' 2.1
  45.     '2.1.1
  46.    
  47.         Sheets("OrderForm").Select
  48.    
  49.     ' 2.1.2
  50.    
  51.         '2.1.2.1
  52.             Range("C17").Select ' <--- C17 = Base Cell
  53.         
  54.         '2.1.2.2
  55.             ActiveCell.Offset(0, 0).Range("A1").Select ' <--- No Change Due to First Iteration
  56.         
  57.     '2.1.3

  58.         '2.1.3.1
  59.             Selection.Copy

  60.         '2.1.3.2.
  61.             Sheets("Price&GiftInfo").Select
  62.                 Range("RWM").Select
  63.                 Selection.PasteSpecial Paste:=xlPasteValues
  64. '2.2

  65.     '2.2.1
  66.         Sheets("OrderForm").Select
  67.         
  68.     '2.2.2
  69.         ActiveCell.Offset(0, 2).Select
  70.         
  71.     '2.2.3
  72.         Selection.Copy
  73.         
  74. '2.3

  75.     '2.3.1.
  76.    
  77.         Sheets("OrderData").Select
  78.             ActiveCell.Select ' <---- No current movement as First Iteration
  79.         
  80.     '2.3.2
  81.         Select Case RWM
  82.         
  83.         Case Is = "Red"
  84.             ActiveCell.Offset(0, 0).Select
  85.             
  86.         Case Is = "White"
  87.             ActiveCell.Offset(0, 1).Select
  88.         
  89.         Case Is = "Mixed"
  90.             ActiveCell.Offset(0, 2).Select
  91.             
  92.         End Select
  93.         
  94.     '2.3.3
  95.         Selection.PasteSpecial Paste:=xlPasteValues
  96.         
  97.       Next
  98.       
  99.       For Winetype = 3 To 3
  100.       
  101.       
  102.       
  103.       
  104.       
  105.       
  106. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  107.       
  108. ' LOOP TWO

  109. '2.1
  110.    
  111.     '2.1.1
  112.         Sheets("OrderForm").Select
  113.    
  114.     '2.1.2
  115.    
  116.         '2.1.2.1
  117.             Range("C17").Select
  118.         
  119.         '2.1.2.2
  120.             ActiveCell.Offset(1, 0).Range("A1").Select ' <---- Second iteration = Move one down
  121.         
  122.     '2.1.3

  123.         '2.1.3.1
  124.             Selection.Copy

  125.         '2.1.3.2.
  126.             Sheets("Price&GiftInfo").Select
  127.                 Range("RWM").Select
  128.                 Selection.PasteSpecial Paste:=xlPasteValues
  129.    
  130. '2.2

  131.     '2.2.1
  132.         Sheets("OrderForm").Select
  133.         
  134.     '2.2.2
  135.         ActiveCell.Offset(0, 2).Select
  136.         
  137.     '2.2.3
  138.         Selection.Copy
  139.         
  140. '2.3

  141.     '2.3.1.
  142.         Sheets("OrderData").Select
  143.         
  144.         ActiveCell.Offset(0, 1).Select ' <---- Second Iteration = Move One Across
  145.         
  146.     '2.3.2
  147.         
  148.         Select Case RWM
  149.         
  150.         Case Is = "Red"
  151.             ActiveCell.Offset(0, -1).Select
  152.             
  153.         Case Is = "White"
  154.             ActiveCell.Offset(0, 0).Select
  155.         
  156.         Case Is = "Mixed"
  157.             ActiveCell.Offset(0, 1).Select
  158.             
  159.         End Select
  160.         
  161.     '2.3.3
  162.         Selection.PasteSpecial Paste:=xlPasteValues
  163.         
  164.         
  165.        Next
  166.       
  167.        For Winetype = 3 To 3
  168.       
  169.       
  170.       
  171.       
  172.       
  173. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  174.       
  175. ' LOOP THREE

  176. '2.1
  177.     '2.1.1
  178.         Sheets("OrderForm").Select
  179.    
  180.     '2.1.2
  181.    
  182.         '2.1.2.1
  183.             Range("C17").Select
  184.         
  185.         '2.1.2.2
  186.             ActiveCell.Offset(2, 0).Range("A1").Select ' <---- Third iteration = Move two down
  187.         
  188.     '2.1.3

  189.         '2.1.3.1
  190.             Selection.Copy

  191.         '2.1.3.2.
  192.         
  193.             Sheets("Price&GiftInfo").Select
  194.                 Range("RWM").Select
  195.                 Selection.PasteSpecial Paste:=xlPasteValues
  196.    
  197. '2.2
  198.     '2.2.1
  199.         Sheets("OrderForm").Select
  200.         
  201.     '2.2.2
  202.         ActiveCell.Offset(0, 2).Select
  203.         
  204.     '2.2.3
  205.         Selection.Copy
  206.    
  207.         
  208. '2.3
  209.     '2.3.1.
  210.         Sheets("OrderData").Select
  211.         
  212.         ActiveCell.Offset(0, 1).Select ' <---- Third Iteration = Move Two Across
  213.         
  214.     '2.3.2
  215.         
  216.         Select Case RWM
  217.         
  218.         Case Is = "Red"
  219.             ActiveCell.Offset(0, -2).Select
  220.             
  221.         Case Is = "White"
  222.             ActiveCell.Offset(0, -1).Select
  223.         
  224.         Case Is = "Mixed"
  225.             ActiveCell.Offset(0, 0).Select
  226.             
  227.         End Select
  228.         
  229.     '2.3.3
  230.         Selection.PasteSpecial Paste:=xlPasteValues
  231.         
  232.     Next Winetype
  233.    
  234.    
  235.    
  236.         
  237. ' Forloop ends here
  238. ActiveCell.Offset(0, 1).Select

  239.    
  240.     Sheets("OrderForm").Select
  241.         Range("E23").Select
  242.         Application.CutCopyMode = False
  243.         Selection.Copy
  244.     Sheets("OrderData").Select
  245.         Selection.PasteSpecial Paste:=xlPasteValues
  246.         ActiveCell.Offset(0, 1).Range("A1").Select
  247.    
  248.     Sheets("OrderForm").Select
  249.         Range("E25:F25").Select
  250.         Application.CutCopyMode = False
  251.         Selection.Copy
  252.     Sheets("OrderData").Select
  253.         ActiveCell.Select
  254.         Selection.PasteSpecial Paste:=xlPasteValues
  255.         ActiveCell.Offset(0, 1).Range("A1").Select
  256.    
  257.     Sheets("OrderForm").Select
  258.         Range("F21").Select
  259.         Application.CutCopyMode = False
  260.         Selection.Copy
  261.     Sheets("OrderData").Select
  262.         Selection.PasteSpecial Paste:=xlPasteValues
  263.         ActiveCell.Offset(0, 1).Range("A1").Select
  264.    
  265.     Sheets("OrderForm").Select
  266.         Range("H17").Select
  267.         Application.CutCopyMode = False
  268.         Selection.Copy
  269.     Sheets("OrderData").Select
  270.         Selection.PasteSpecial Paste:=xlPasteValues
  271.         ActiveCell.Offset(0, 1).Range("A1").Select
  272.    
  273.     Sheets("OrderForm").Select
  274.         Range("H19").Select
  275.         Application.CutCopyMode = False
  276.         Selection.Copy
  277.     Sheets("OrderData").Select
  278.         Selection.PasteSpecial Paste:=xlPasteValues
  279.         ActiveCell.Offset(0, 1).Range("A1").Select
  280.    
  281.     Sheets("OrderForm").Select
  282.         Range("H21").Select
  283.         Application.CutCopyMode = False
  284.         Selection.Copy
  285.     Sheets("OrderData").Select
  286.         Selection.PasteSpecial Paste:=xlPasteValues
  287.         ActiveCell.Offset(0, 1).Range("A1").Select
  288.    
  289.     Sheets("OrderForm").Select
  290.         Range("H23").Select
  291.         Application.CutCopyMode = False
  292.         Selection.Copy
  293.     Sheets("OrderData").Select
  294.         Selection.PasteSpecial Paste:=xlPasteValues
  295.         ActiveCell.Offset(0, 1).Range("A1").Select
  296.    
  297.     Sheets("OrderForm").Select
  298.         Range("H25").Select
  299.         Application.CutCopyMode = False
  300.         Selection.Copy
  301.     Sheets("OrderData").Select
  302.         Selection.PasteSpecial Paste:=xlPasteValues
  303.         ActiveCell.Offset(0, 1).Range("A1").Select
  304.    
  305.     Sheets("OrderForm").Select
  306.         Range("H27").Select
  307.         Application.CutCopyMode = False
  308.         Selection.Copy
  309.     Sheets("OrderData").Select
  310.         Selection.PasteSpecial Paste:=xlPasteValues
  311.         ActiveCell.Offset(0, 1).Range("A1").Select
  312.         
  313. ' Updates the ref no.
  314.    
  315.     Sheets("Price&GiftInfo").Select
  316.         Application.CutCopyMode = False
  317.         
  318.     Range("A21").Select
  319.         ActiveCell.FormulaR1C1 = "='OrderData'!R[18]C[-13]+1"
  320.         
  321.     Sheets("OrderForm").Select
  322.         Range("H14").Select
  323.         ActiveCell.FormulaR1C1 = "='OrderData'!R[7]C[-7]+1"
  324.         Selection.Copy
  325.         
  326.     Sheets("OrderData").Select
  327.         Selection.PasteSpecial Paste:=xlPasteValues
  328.     Application.CutCopyMode = False
  329.     Selection.Copy
  330.    
  331.     Sheets("Price&GiftInfo").Select
  332.         Selection.PasteSpecial Paste:=xlPasteValues
  333.         Application.CutCopyMode = False
  334.     Sheets("OrderData").Select
  335.     ActiveCell.Select
  336.    

  337. End Sub
½Æ»s¥N½X

¦^´_ 4# luhpro
Finally,i got it and the code is totally working!
Thanks for your explanation !!
Thanks so much!!!

TOP

¥»©«³Ì«á¥Ñ luhpro ©ó 2014-11-9 21:52 ½s¿è

¦^´_ 3# hildaliu
  Dim iI% ' ©w¸qiI¬°Integer(¾ã¼Æ)ÅܼÆ
  Dim lTRow& ' ©w¸qlTRow¬°Long(ªø¾ã¼Æ)ÅܼÆ
  Dim rTar As Range ' ©w¸qrTar¬°Àx¦s®æ«ü¼Ð
  Dim shSou As Worksheet ' ©w¸qshSou¬°¤u§@ªí«ü¼Ð
  
  Set shSou = Sheets("OrderForm") ' ³]©w«ü¼ÐshSou«ü¦VOrderForm¤u§@ªí
  With Sheets("OrderData") ' ³]©w¨t²Î¹w³]«ü¼Ð . ªº¼Ðªº, ©³¤U¥H . ¶}ÀYªºª«¥ó©ÎÅܼƤ¤, ¨ä . ¥NªíOrderData¤u§@ªí,ª½¨ì End With ¬°¤î, Cells«ü¥O¥Î©óªí¥ÜÀx¦s®æ, ¨ä®æ¦¡¬° Cells(¦C¸¹,Ä渹)
    lTRow = .Cells(Rows.Count, 2).End(xlUp).Row + 1 ' ³]©wlTRowªº­Èµ¥©ó .(§YOrderData¤u§@ªí) ¤¤²Ä2(§YB)Ä檺³Ì©³¤U¤@­Ó¦³¸ê®ÆÀx¦s®æªº¦C¸¹,
                                                                                                ' Cells(Rows.Count, 2)=BÄæ³Ì¥½¦C, .End(xlUp) ©¹¤W§ä²Ä¤@­Ó¦³¸ê®ÆªºÀx¦s®æ, .Row ¨ú±o¨ä¦C¸¹

    For iI = 17 To 19 ' ³]©w iI(¦¹³B¥Î©ó¦C¸¹)ªºªì­È¬°17, ±µµÛ°õ¦æ«áÄò«ü¥O,¹J¨ìNext®É,¥ý±NiI¥[1«á¦Aªð¦^¦¹¦æ°õ¦æ,°j°é¤º«ü¥O­«½Æ°õ¦æª½¨ì iI ¤j©ó To «á­±ªº¼Æ¦r(¥»¨Ò¬°19),¦A±µÄò°õ¦æNext«áªº«ü¥O
      Set rTar = shSou.Cells(iI, 3) ' ³]©wrTar=shSou(§YOrderForm¤u§@ªí)ªº²Ä3(§YC)Äæ²ÄiI¦CÀx¦s®æ
      Select Case rTar ' ©³¤U±N¨Ì¾Ú rTar ªº­È°µ¤À¤ä³B²z
        Case "Red" ' ·írTar="Red"®É°õ¦æ©³¤Uªº«ü¥Oª½¨ì Case ©Î End Select
          .Cells(lTRow, 2) = rTar.Offset(, 2)  ' ³]©wOrderData¤u§@ªíªº  BÄæ²ÄlTRow¦C=rTar¦V¥k¦ì²¾¨âÄæ(§YOrderForm¤u§@ªíªºEÄæ²ÄiI¦CÀx¦s®æ)
         
        Case "White" ' ·írTar="White"®É°õ¦æ©³¤Uªº«ü¥O...
          .Cells(lTRow, 3) = rTar.Offset(, 2) ' ¦P¤W CÄæ²ÄlTRow¦C=...
            
        Case "Mixed" ' ·írTar="Mixed"®É°õ¦æ©³¤Uªº«ü¥O...
          .Cells(lTRow, 4) = rTar.Offset(, 2) ' ¦P¤W DÄæ²ÄlTRow¦C=...
      End Select ' ¿ï¾Ü©Ê¤À¤ä«ü¥Oµ²§ô
    Next ' Ä~Äò°õ¦æ¤U¤@­Ó For «ü¥O±ø¥ó§PÂ_, ¥H¨M©w¬O§_Ä~Äò°õ¦æ°j°é¤ºªº«ü¥O
  End With ' With °Ï¶ôµ²§ô,¨t²Î¹w³]«ü¼Ð.ªº¼Ðªº«ü¦V¸Ñ°£,­Y¤W¼hÁÙ¦³.ªº«ü¦V©w¸q,±q¤§.

TOP

¦^´_ 2# luhpro th
Thanks so much!
unfortunately, I just tried to run it out, but it's still not working
¥i¤£¥iexplain¤@¤U¥¦ªº¹B§@?
¦]¬°§Ú¤£¤Ó©ú¥Õ³ocode¦³¤°»ò·N«ä
Sorry for any inconvenient for explain to me!

TOP

¦^´_ 1# hildaliu
¥u°w¹ï¨º3­Ó¸ê®Æªº«þ¨©
  1.   Dim iI%
  2.   Dim lTRow&
  3.   Dim rTar As Range
  4.   Dim shSou As Worksheet
  5.   
  6.   Set shSou = Sheets("OrderForm")
  7.   With Sheets("OrderData")
  8.     lTRow = .Cells(Rows.Count, 2).End(xlUp).Row + 1
  9.     For iI = 17 To 19
  10.       Set rTar = shSou.Cells(iI, 3)
  11.       Select Case rTar
  12.         Case "Red"
  13.           .Cells(lTRow, 2) = rTar.Offset(, 2)
  14.          
  15.         Case "White"
  16.           .Cells(lTRow, 3) = rTar.Offset(, 2)
  17.             
  18.         Case "Mixed"
  19.           .Cells(lTRow, 4) = rTar.Offset(, 2)
  20.       End Select
  21.     Next
  22.   End With
½Æ»s¥N½X

TOP

        ÀR«ä¦Û¦b : ¤@¥y·Å·xªº¸Ü¡A´N¹³©¹§O¤H¨­¤WÅx­»¤ô¡A¦Û¤v·|ªg¨ì¨â¤Tºw¡C
ªð¦^¦Cªí ¤W¤@¥DÃD