返回列表 上一主題 發帖

[發問] VBA loop and select case問題 (HELP)

回復 1# hildaliu
只針對那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
複製代碼

TOP

本帖最後由 luhpro 於 2014-11-9 21:52 編輯

回復 3# hildaliu
  Dim iI% ' 定義iI為Integer(整數)變數
  Dim lTRow& ' 定義lTRow為Long(長整數)變數
  Dim rTar As Range ' 定義rTar為儲存格指標
  Dim shSou As Worksheet ' 定義shSou為工作表指標
  
  Set shSou = Sheets("OrderForm") ' 設定指標shSou指向OrderForm工作表
  With Sheets("OrderData") ' 設定系統預設指標 . 的標的, 底下以 . 開頭的物件或變數中, 其 . 代表OrderData工作表,直到 End With 為止, Cells指令用於表示儲存格, 其格式為 Cells(列號,欄號)
    lTRow = .Cells(Rows.Count, 2).End(xlUp).Row + 1 ' 設定lTRow的值等於 .(即OrderData工作表) 中第2(即B)欄的最底下一個有資料儲存格的列號,
                                                                                                ' Cells(Rows.Count, 2)=B欄最末列, .End(xlUp) 往上找第一個有資料的儲存格, .Row 取得其列號

    For iI = 17 To 19 ' 設定 iI(此處用於列號)的初值為17, 接著執行後續指令,遇到Next時,先將iI加1後再返回此行執行,迴圈內指令重複執行直到 iI 大於 To 後面的數字(本例為19),再接續執行Next後的指令
      Set rTar = shSou.Cells(iI, 3) ' 設定rTar=shSou(即OrderForm工作表)的第3(即C)欄第iI列儲存格
      Select Case rTar ' 底下將依據 rTar 的值做分支處理
        Case "Red" ' 當rTar="Red"時執行底下的指令直到 Case 或 End Select
          .Cells(lTRow, 2) = rTar.Offset(, 2)  ' 設定OrderData工作表的  B欄第lTRow列=rTar向右位移兩欄(即OrderForm工作表的E欄第iI列儲存格)
         
        Case "White" ' 當rTar="White"時執行底下的指令...
          .Cells(lTRow, 3) = rTar.Offset(, 2) ' 同上 C欄第lTRow列=...
            
        Case "Mixed" ' 當rTar="Mixed"時執行底下的指令...
          .Cells(lTRow, 4) = rTar.Offset(, 2) ' 同上 D欄第lTRow列=...
      End Select ' 選擇性分支指令結束
    Next ' 繼續執行下一個 For 指令條件判斷, 以決定是否繼續執行迴圈內的指令
  End With ' With 區塊結束,系統預設指標.的標的指向解除,若上層還有.的指向定義,從之.

TOP

        靜思自在 : 受人點水之恩,須當湧泉以報。
返回列表 上一主題