-1

私は VBA の初心者で、数字のブロックを移動するためのクイック マクロを作成するのに苦労しています。

私が作成しようとしているのは、押されたときに次のボタンです。

(i,5) の内容を E63 に移動します。

(i, 16) から F67:F110 までのセル

行 10 に「低」または「高」が含まれているかどうかに応じて、3 つのセルをセット N106:N109 からセル (i12:i14) に移動します [ここで、i は列参照です)。

コードの Range セクションはこれを達成するものであり、正常に動作しています。私が抱えている問題は、Do.Until 行と参照 Column(i) にあります。

これがどのように機能するか知っている人はいますか?ありがとう

更新 Siddharth の助けのおかげで、Range 関数に文字列がある行である 1 ビットを除くすべてを修正できました。ここで .Formula を使用せず、代わりに Paste を使用する理由は、そうしないと、セル A12:A14 から Z12:Z14 までのすべてのセルが同じものになり、正しくないからです。他の部分では問題ありません。これらの回線でタイプ 13 の不一致エラーが発生します。

Sub Columntest()
Dim i As Integer
    i = 5
    Do Until Cells(5, i).Value = ""
        If Cells(10, i).Value = "Low" Then
                   Range("E63").Formula = Cells(5, i)
                   Range("F67:F110").Formula = Cells(16, i)
                   Range("O106:O108").Copy
                   Range("=" & Columns(i) & "12").PasteSpecial Paste:=xlPasteValues
        End If
        If Cells(10, i).Value = "High" Then
                   Range("E63").Formula = Cells(5, i)
                   Range("F67:F110").Formula = Cells(16, i)
                   Range("N106:N108").Copy
                   Range(Columns(i) & "12").PasteSpecial Paste:=xlPasteValues
        End If
    i = i + 1
    Loop

サブ終了

4

1 に答える 1

0

型の不一致は、範囲参照で列オブジェクトと文字列を連結しようとしているためです。

Range("=" & Columns(i) & "12").PasteSpecial Paste:=xlPasteValues

代わりにこれを使用してみてください:

Cells(12, i).PasteSpecial Paste:=xlPasteValues
于 2013-09-17T11:52:38.323 に答える