2017-11-30 18 views
1

私は選択された範囲のセルを持っています。その中のすべての列を連結し、その行の最初のセルに結果を記録する必要があります(選択の最初の列)。私は、次のコード各行の列を連結する

Dim row As Object 
Dim col As Object 
Dim cell_concat As String 

For Each row In Selection 
    cell_concat = "" 
    For Each col In row 
     cell_concat = cell_concat & col.Value 
    Next col 
    `How to record in first cell? 
Next row 

を書くしようとしている。しかし、この方法では、残念ながら動作しませんし、私は、行の最初のセルにcell_concatを録音する方法を見つけ出すことはできません。私は間違って何をしていますか?コードで何を修正すればい​​いですか?

+0

第? –

+0

選択項目の最初の列 – Victor

答えて

1

これは、選択された各行の最初のセルに値を連結します選択の列A又は最初の列のような、その行の

Dim rw As Range 
Dim col As Range 
Dim cell_concat As String 

For Each rw In Selection.Rows 
    cell_concat = "" 
    For Each col In rw.Cells 
     cell_concat = cell_concat & col.Value 
    Next col 
    rw.Cells(1, 1).Value = cell_concat 
Next row 
+0

行全体が選択されていない場合はどうなりますか? Select.Columns(1)。最初に選択した列の番号を取得する列?そしてrw.Row列番号は? – mooseman

+0

rwは、選択された範囲の各行を反復して含む範囲になりません。したがって、A1:H9を選択した場合、rwは最初にA1:H9、A2:H9になります。次に、colは値を連結している範囲内の各セルを反復します。次に、rw.Cells(1:1)は常に最初の列のセルを参照します。選択が1つのセルであっても機能します。何かをするようには見えませんが、それはそこにあった価値を置くだけです。それはただ1つの行または1つの列にすることができ、うまくいくでしょう。 –

+0

セルは親と相対的です。 'worksheet.Cells(1,1)'を使うときは 'A1'を参照しますが、' rw'の範囲が 'B1:D1'の場合、' rw.Cells(1,1) 'は' B1 '。 @mooseman –

関連する問題