2017-08-16 13 views
1

標準のテンプレートがあります。ユーザーが自分の列を追加するという事実を打ち消すために、私はすべての列を索引付けしました。タイトルヘッダーの変数を作成し、この変数に整数を割り当てました。 したがって、列Aは常に整数変数IColumnAを持つ文字列変数ColumnAと呼ばれます。私はまた、最後の行のための変数とLRowのセット数を持っている。列番号と行番号を使ったコピー範囲(整数)vba

私の質問は:

どのようにして整数変数で列範囲を選択できますか?

インスタンス range(IcolumnA, lastrow .end (xlUp)).Copy(又はそれらのバリアント)については

整数は(私は数える)の範囲の方法では動作しませんので、これは動作しません。

誰が一緒に私を助けることができますか?

答えて

1

編集: これは質問「どのように私は範囲をコピーしない」の一般的なソリューションです。答えは - ソースとターゲットを宣言し、ターゲットにソースをコピーします。

Option Explicit 

Public Sub TestMe() 

    Dim rngSource As Range 
    Dim rngTarget As Range 

    With Worksheets(1) 
     Set rngSource = .Range(.Cells(2, "A"), .Cells(100, "B")) 
     Set rngTarget = .Range(.Cells(2, "C"), .Cells(100, "D")) 

     rngSource.Copy 
     rngTarget.PasteSpecial xlPasteAll 
     Application.CutCopyMode = False 
    End With 

End Sub 

あなただけの列全体をコピーしたい場合は、このような何かしてみてください:

Sub TestMe() 

    Range(Columns(5), Columns(6)).Copy 
    Range(Columns(7), Columns(8)).PasteSpecial xlPasteAll 
    Application.CutCopyMode = False 

End Sub 

をそれが列をコピーします5〜6から7〜8列までです。もちろん、数値の代わりに変数を入れることができます。


そして、これは変数で、もう少し洗練されている:

Sub TestMe() 

Dim lngCopyColumn As Long: lngCopyColumn = 2 
Dim lngPasteColumn As Long: lngPasteColumn = 10 
Dim lngLenC   As Long: lngLenC = 3 

Range(Columns(lngCopyColumn), Columns(lngCopyColumn + lngLenC)).Copy 
Range(Columns(lngPasteColumn), Columns(lngPasteColumn + lngLenC)).PasteSpecial xlPasteAll 
Application.CutCopyMode = False 

End Sub 
+0

あなたはLngLenCで何を意味するのですか?それは総行数ですか? k、clear – MyName

+0

@MyName - 範囲内の合計列。両方の範囲で同じにする必要があります。 – Vityata

+0

ありがとうございます。唯一のことは、列全体を選択することです。私はそれを1番目のセル(セル2から)から終わり(xlDown)に1つオフセットする必要があります。私はちょっとしたおとぎ話に夢中になりました。このコマンドをどこに送る必要があるかを指定できますか? 'WsStam.Range(列(iKolomnrCorpID)、列(iKolomnrCorpID))。コピー' – MyName