0

こんにちは、すべてが順調であることを願っています:)ループして次のセルを選択する方法を理解するのに問題があるため、h3:z3の範囲のセルが空になると停止します:)

そして、それが行っているのは、h3から値を選択してb3に貼り付けることで、e3に注文番号を与える別のマクロを実行し、それをコピーしてh4に貼り付け、次にI3の次のセルに移動してb3に貼り付けますe3からの結果をコピーしますI4に貼り付けて同じようにします

ありがとう

For Each cell In Range("H3:Z3")

If IsEmpty(cell.Value) Then Exit For
'select ammount and place in lookup
Range("H3").Select
Selection.Copy
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

' fill in order numbers
bulkON_Click

'select order and past under postcode
Range("E3").Select
Application.CutCopyMode = False
Application.CutCopyMode = False
Selection.Copy
Range("H4").Select
ActiveSheet.Paste

Loop
4

1 に答える 1

2

このコードではおそらく変更することがたくさんあります。これで始められるはずです。

手始めに、Forループには(ブロックに使用される)Nextではなくステートメントが必要です。また、宛先セルに直接値を書き込むことを優先して、コピー/貼り付けを絶対に避けてください。LoopDo

セル「B3」と「E3」は一定であり、H3:Z3のセルを反復処理し、H4:Z4の対応するセルに入れる値を計算していると仮定します。

For Each Cell In Range("H3:Z3")

    If Cell.Value = vbNullString Then Exit For
    'select ammount and place in lookup
    Range("B3").Value = Cell.Value  '<< no need to "copy & paste", just write the value directly
    ' fill in order numbers
    bulkON_Click

    'insert the value under postcode
    ' this OFFSET refers to the cell 1 row below the "Cell"
    Cell.Offset(1, 0).Value = Range("E3").Value

Next
于 2013-02-22T03:44:01.617 に答える