返回列表 上一主題 發帖

[發問] ~ 發現一個新的問題 關於IF判斷式

回復 40# willy1205
你回復的是willy1205 我沒查看到
  1. Sub Allowance報銷單_RoundedRectangle2_Click()
  2. Dim NewRow As Integer, E As Range, Sh As Worksheet
  3.     Set Sh = Worksheets("4-工作日誌OP COA AGR")
  4.     For Each E In Range("B10,B12,C10,C12")
  5.         If E <> "" Then  '
  6.             Select Case E.Address(0, 0)
  7.                 Case "B10"
  8.                     NewRow = 1
  9.                 Case "B12"
  10.                     NewRow = 2
  11.                 Case "C10"
  12.                     NewRow = 3
  13.                 Case "C12"
  14.                     NewRow = 4
  15.             End Select
  16.             With Worksheets(E.Value)
  17.             'E = "" 或沒這工作表-> out of range 陣列索引超出範圍 (錯誤 9)
  18.                 .Cells(NewRow, 1) = Sh.Range("C7")
  19.                 .Cells(NewRow, 2) = Sh.Range("C8").Value
  20.                 .Cells(NewRow, 3) = Sh.Range("I14").Value
  21.                 .Cells(NewRow, 4) = Sh.Range("I15").Value
  22.                 .Cells(NewRow, 6) = Sh.Range("G24").Value
  23.                 If E.Address = "$B$10" Then
  24.                     .Cells(NewRow, 7) = Sh.Range("H32")
  25.                     .Cells(NewRow, 5) = Sh.Range("J10").Value
  26.                     Sh.Range("J34") = NewRow
  27.                 Else
  28.                     .Cells(NewRow, 7) = Sh.Range("H34")
  29.                     .Cells(NewRow, 5) = Sh.Range("J12").Value
  30.                     Sh.Range("J35") = NewRow
  31.                 End If
  32.             End With
  33.         End If
  34.     Next
  35.     MsgBox "New Data added", vbOKOnly, "Data"
  36. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 41# GBKEE


    可是版主只有在上面For Each E In Range("B10,B12,C10,C12")這邊加入C10與C12下面才會OUT OF RANGE,
原本只有B10與B12的話是沒問題的,
那如果上面加入C10與C12,下面的If E.Address = "$B$10" Then 這邊要怎麼加 入C10進入判斷式???

就是B10與C10他們導出的結果是一樣,然後B12與C12導出的結果一樣。

P.S. 因為原本的程式只判斷B10與B12,想再加入C10與C12,讓B10與C10一組,B12與C12一組。

TOP

回復 42# willy1205
就是B10與C10他們導出的結果是一樣,然後B12與C12導出的結果一樣

你要的導出的結果,請附檔看看.猜不出你要的是什麼!!是這樣嗎?
  1. Sub Allowance報銷單_RoundedRectangle2_Click()
  2. Dim NewRow As Integer, E As Range, Sh As Worksheet
  3.     Set Sh = Worksheets("4-工作日誌OP COA AGR")
  4.     For Each E In Range("B10,B12")
  5.         If E <> "" Then
  6.             Set Sh = Sheets(E.Value)
  7.         Else
  8.             Set Sh = Sheets(E.Offset(, 1).Value)
  9.         End If
  10.         If E.Address(0, 0) = "B10" Then NewRow = 1
  11.         If E.Address(0, 0) = "B12" Then NewRow = 2
  12.         With Sh
  13.             .Cells(NewRow, 1) = .Range("C7")
  14.             .Cells(NewRow, 2) = .Range("C8").Value
  15.             .Cells(NewRow, 3) = .Range("I14").Value
  16.             .Cells(NewRow, 4) = .Range("I15").Value
  17.             .Cells(NewRow, 6) = .Range("G24").Value
  18.             If E.Address = "$B$10" Then
  19.                 .Cells(NewRow, 7) = .Range("H32")
  20.                 .Cells(NewRow, 5) = .Range("J10").Value
  21.                 .Range("J34") = NewRow
  22.             Else
  23.                 .Cells(NewRow, 7) = .Range("H34")
  24.                 .Cells(NewRow, 5) = .Range("J12").Value
  25.                 .Range("J35") = NewRow
  26.             End If
  27.         End With
  28.         End If
  29.     Next
  30.     MsgBox "New Data added", vbOKOnly, "Data"
  31. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 43# GBKEE


  版主~就像這個檔案裡面一樣,原本只有A君與B君,我想新增輸出結果到C君與D君
然後A君與C君都是主辦所以輸出相同數字,C君與D君都是協辦輸出相同數字,
我在檔案裡面標是紅色的地方就是新增的部份
excercise.zip (63.14 KB)

TOP

回復 44# willy1205
試試看
  1. Sub Allowance報銷單_RoundedRectangle2_Click()
  2.     Dim NewRow As Integer, E As Range, Sh As Worksheet
  3.     Dim Rng(1 To 2) As Range, i As Integer
  4.     Set Sh = Worksheets("4-工作日誌OP COA AGR")
  5.     With Sh
  6.         Set Rng(1) = .Range("b10:F10") '主辦者的儲存格範圍
  7.         Set Rng(2) = .Range("b12:F12") '協辦者的儲存格範圍
  8.     End With
  9.     For i = 1 To 2
  10.         NewRow = Sh.Range("J34").Value
  11.         If i = 2 Then NewRow = Sh.Range("J35").Value
  12.         For Each E In Rng(i)
  13.             If E <> "" Then
  14.                 With Worksheets(E.Value)
  15.                     .Cells(NewRow, 1) = Sh.Range("C7")
  16.                     .Cells(NewRow, 2) = Sh.Range("C8").Value
  17.                     .Cells(NewRow, 3) = Sh.Range("I14").Value
  18.                     .Cells(NewRow, 4) = Sh.Range("I15").Value
  19.                     .Cells(NewRow, 6) = Sh.Range("G24").Value
  20.                     If i = 1 Then
  21.                         .Cells(NewRow, 7) = Sh.Range("H32")
  22.                         .Cells(NewRow, 5) = Sh.Range("J10").Value
  23.                         Sh.Range("J34") = NewRow
  24.                     Else
  25.                         .Cells(NewRow, 7) = Sh.Range("H34")
  26.                         .Cells(NewRow, 5) = Sh.Range("J12").Value
  27.                         Sh.Range("J35") = NewRow
  28.                     End If
  29.                 End With
  30.             End If
  31.         Next
  32.     Next
  33.     MsgBox "New Data added", vbOKOnly, "Data"
  34. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 45# GBKEE


    yes 謝謝版主 我在試試看~

TOP

回復 45# GBKEE


    版主在程式第四行那邊Set Sh = Worksheets("4-工作日誌OP COA AGR"),假設今天我想要開50個工作日誌sheet,即4-工作日誌OP COA AGR  , 4-工作日誌OP COA AGR(2)........~ 4-工作日誌OP COA AGR(50),
但我如果是複製工作表的話,變成每個巨集設定sh那邊都是Set Sh = Worksheets("4-工作日誌OP COA AGR"),這樣就變成除了4-工作日誌OP COA AGR這個工作表可以正常運作以外其他49個都無法,
因為sh被卡死在Worksheets("4-工作日誌OP COA AGR")了,這種情況的話該怎麼改??

TOP

回復  GBKEE


    版主在程式第四行那邊Set Sh = Worksheets("4-工作日誌OP COA AGR"),假設今天我想要 ...
willy1205 發表於 2014-7-10 15:46



我試了下是不是將名稱改成Activesheet.name ??

TOP

        靜思自在 : 一句溫暖的話,就像往別人身上灑香水,自己會沾到兩三滴。
返回列表 上一主題