2016-11-30 9 views
0

テーブルの範囲をコピーして、新しいブックに貼り付けたいとします。私は、他の列と行で構成された範囲を変数としてコピーしたいと思います。たとえば、列CとEを1から17,20、32から39、45の行でコピーします。その最大10回(列の場合)を実行して、コピーする列の選択が完了したら、私は出る。より明確にするために、例があります。私は列B、D、Fを選択し、コピーする行を選択します(すべての列で同じです)。最後にコピーして新しいワークブックに貼り付けます。だから私は3回後に停止し、私が選んだものをコピーして出て行く。VBA列と行の変数で範囲を使用

マイコード

Sub Macro3() 

Dim ColNum As Long 
Dim col As String 
Dim CopyRange As Range, row As String 

For i = 1 To 10 
    col = InputBox("Column number " & i & ", if finish write 'done'") 
    Do While row <> "done" 
     row = InputBox("row number to copy (max to 62), if finish write 'done'") 
    Loop 
    If col = "done" Then 
     MsgBox ("copy finished") 
     GoTo ExitIteration 
    Else 
     Set CopyRange = Union(CopyRange, Range(col & row, [col & row])) 
    End If 
Next 

ExitIteration: 

CopyRange.Copy 
Workbooks.Add 
ActiveSheet.Paste 
Windows("Pedro.xlsm").Activate 

End Sub 

すべてのヘルプ、それを解決してください?

+0

「完了」以外の何かを入力するたびに、そのたびに 'InputBox'にループバックするので、' Do While row <> done done "は表示されません。 –

+0

それでは、私のコードを動かすための解決策は何ですか? – Zigouma

+0

これはあなたの前の質問のちょっとした反省ではありませんか? http://stackoverflow.com/questions/40806057/vba-copy-selected-columns-and-rows-from-an-excel-table-and-convert-paste-it-in-a?noredirect=1#comment68833714_40806057を参照してください。 –

答えて

0

「完了」が入力されるのを待つ以外に、ループ内で何もしないでください。

For i = 1 To 10 
col = InputBox("Column number " & i & ", if finish write 'done'") 
If col = "done" Then 
    MsgBox ("copy finished") 
    GoTo ExitIteration 
Else 
    Do While row <> "done" 
     row = InputBox("row number to copy (max to 62), if finish write 'done'") 
     Set CopyRange = Union(CopyRange, Range(col & row, [col & row])) 
    Loop 
End If 
Next 
+0

私はいつもアプリケーション定義またはオブジェクト定義エラー(エラー1004)を得る – Zigouma

+0

このエラーは、// Set CopyRange = Union(CopyRange 、Range(col&row、[col&row])) – Zigouma

0

私はコードを書いて、私の考えのための例を作る時間がありません。申し訳ありません。しかし、私はそれを公開しようとします...

最初と最後の列と行を使用してコードをフィードし、最大10回進むことを望む異なる範囲を構成するシートを作成します。 3つのレベルのループを使用して、必要なセルのそれぞれに到達します。

+0

私はそれを自分でやろうとしています!ありがとうTilan。 – Zigouma

関連する問題