2012-04-04 18 views
2

私は、誰かが次のExcelマクロ要件へのアプローチ方法についていくつかの洞察を持っていることを期待していました。選択された領域の連結のためのExcelマクロ

開始条件:カラムAのテキスト値の 可変数

提案ソリューション:私は希望 は、列Aの連続し細胞の変数番号を選択することができ、その後、持っていますコンマで区切られたテキストは、列Bの一番上のセルに隣接する単一の列に連結されます。

例: A2-A4がシート上で選択されます。 マクロを実行した後、B2の内容(選択範囲のすぐ上に隣接)には、 "A2、A3、A4"の形式のテキストが含まれます。

A5-A10は、選択され: マクロを実行した後、(選択の上部に直接隣接)B5の内容は、フォーム "A5、A6、A7、A8、A9、A10" のテキストを含むであろう。

私を殺しているのは、複数の選択肢の多様性を利用して追加する方法です。私はExcelマクロでループを処理する方法が明確ではありません。私はCSの学位を持っていますが、私はインフラストラクチャで働いてしまったので、少し錆びました。誰かが助けることができます、これは毎日感情的な時間を節約します。すべての応答のおかげで。

答えて

2

次のコードは、あなたが求めるものです。私はコメントのレベルが適切であるかどうかわからないので、多くのコメントを追加していません。たとえば、あなたのCSレベルで推測できる場合は、それぞれの声明の目的を説明したくありません。私はまたあなたの疑問には明らかなものよりも多くがあると思っています。たとえば、ワークシートと行番号をパラメータとして渡して、これを関数にする必要があります。質問があるときに戻ってきてください。必要に応じて回答を改善します。

Option Explicit 
Sub JoinCells() 

    Dim ColFirst As Long 
    Dim ColLast As Long 
    Dim JoinedValue As String 
    Dim RowCrnt As Long 
    Dim RowFirst As Long 
    Dim RowLast As Long 

    RowFirst = Selection.Row  ' First row of selection 
    ' Selection.Rows.Count returns the number of rows in the selection. 
    ' Warning! You can fool this code by making multiple selections. 
    RowLast = RowFirst + Selection.Rows.Count - 1 

    ColFirst = Selection.Column 
    ColLast = ColFirst + Selection.Columns.Count - 1 

    If ColFirst <> 1 Or ColLast <> 1 Then 
    Call MsgBox("Please select a range within column ""A""", vbOKOnly) 
    Exit Sub 
    End If 

    With Worksheets("xxxxxxx")  ' Worksheet of your choice. 

    JoinedValue = .Cells(RowFirst, "A").Value 
    For RowCrnt = RowFirst + 1 To RowLast 
     JoinedValue = JoinedValue & "," & .Cells(RowCrnt, "A").Value 
    Next 
    .Cells(RowFirst, "B").Value = JoinedValue 

    End With 

End Sub 
+0

トニー、これは完璧に機能します。ありがとうございました。一つの質問。シート上のA2からA9を選択し、ショートカットキーのコンボでマクロを実行して、RowFirstとRowLastを設定できるように、ワークシート上の現在の選択(強調表示されたセル)をコードに渡すにはどうすればよいですか?私はあなたが引数として関数の値を渡さなければならないと仮定していますが、私は選択されたセルを識別するために使われた関数を知らない。 – Tom

+0

私は現在の選択を識別する最も簡単な方法だと思うようにマクロを更新しました。 –

+0

優れています。まさに私が探していたもの。どうもありがとうございます。私はあなたの評価を上げることができたらいいなあ。 – Tom

関連する問題