2016-03-29 15 views
0

Do Whileループを実行して、ワークブックのSheet2の新しい列でSheet2の3つの列を連結しようとしていますが、2番目のワークシートを参照していると、最初のシートでこのコードを実行すると、私には肯定的な結果が得られます。VBAを使用してExcelワークブックでループを実行する

ActiveWorkbook.Worksheets("Sheet2").Activate 

Dim noSep As String 
noSep = "" 

Cells(1, 3) = col1 
Cells(1, 30) = col2 
Cells(1, 32) = col3 
Cells(1, 63) = colconcatenated 

x = 2 

Do While Worksheets("Sheet2").Cells(x, col1) <> "" 
Cells(x, coloncatenated) = Cells(x, col1) & noSep & Cells(x, col2) & noSep & Cells(x, col3) 
x = x + 1 
Loop 
Columns("BK:BK").EntireColumn.AutoFit 

答えて

1

それはあなたの質問から伝えるのは難しいですが、一度に複数のシートで作業している場合、一般的に、あなたはどのシートを指定するために、これらのシート上のセル/範囲にあなたの参照の全てを修飾する必要がありますあなたは一緒に働いています。

それ以外の場合、Excelはどのシートがアクティブであるかに基づいて推測しようとしますが、これは上記のコードではSheet2です。シート1のセルを参照するために、例えばので

を(。ActiveWorkbook.Worksheets(「シート2」)が先頭に有効にActiveSheetとして設定します):また

Worksheets("Sheet1").Cells(1,3) = col1 

、あなたは暗くすることができますコードを読みやすくするために2つのシートを参照するように変数を設定してください。

Dim shtA as Worksheet 
Dim shtB As Worksheet 

Set shtA = Sheets("Sheet1") 
Set shtB = Sheets("Sheet2") 

shtA.Cells(1, 3) = col1 

+0

私は今これを手にしています。ありがとう! – 1up

0

私は基本的にそれを再構築して、以前の開発者からのすべてのジャンクコードを破壊する必要がありました。いったん始めてから、アクティブなワークシートではないときに作業するシートを指定することで、私の問題が解決されました。私のマクロは完全に機能しています。

ありがとうございました。

関連する問題