大変恐れ入りますが、エクセルVBAの作成をお願いいたします。


"au"と"文書作成"というシートがあります。

【マクロ】
[1]スタートして、"文章作成"シートをCTRLキーを押しながら、適当なセルをクリックしていき、最後にCTRLキーを押しながら、H1セルをクリックします。(例 B2「りんご」→D7「みかん」→F5「もも」→H1)

[2]するとインプットBOXが現れて「貼り付けるセルを指定してください」とのメッセージが現れます。

[3]「I2」(半角)と打ち込みOKを押すと、"au"シートのI2セルに、[1]でセルをクリックしていった順番通りに文字が貼り付けられることになります。(I2には、「りんごみかんもも」となります)
 
※貼付先のセルにすでに何かが入力されているときには、その入力データのあとにくっつけます。
(この場合、I2セルに「やおや」とはいっていたら、「やおやりんごみかんもも」になります。ただし、数式が入っていた場合、数式を値を選択して、同じセルに貼り付けた後の言葉にくっつけます(いつもこの仕様にしてくださってOKです)

できるだけ簡潔なコードにしてくださると勉強になり助かります。お手数をおかけいたしますが、よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2008/05/05 01:31:55
  • 終了:2008/05/05 23:47:58

ベストアンサー

id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692008/05/05 16:56:04

ポイント35pt

http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040727.html

通常のマクロは標準モジュールに作りますが、

この場合は文章作成シートが操作されたら(この場合H1セルがクリックされたら)、

それを受けて実行されるコードを書きたいわけです。

上のリンクの(3)のようにしてVBEでシートをダブルクリックした先にそのまま貼り付ければいいです。

id:naranara19

指示していただいたとおり、やったら、うまくいきました。前回といい、今回といいスキルのない私にご丁寧に教えていただいて、本当にありがとうございます。SALINGERさんは素敵な方です。ありがとうございました。

2008/05/05 23:47:22

その他の回答(1件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692008/05/05 16:12:59

ポイント35pt

>数式が入っていた場合、数式を値を選択して、同じセルに貼り付けた後の言葉にくっつけます

この部分がわからなかったんですが、とりあえず作ってみました。

文章作成のシートのSelectionChangeイベントに次のコードをコピーしてください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim r As Range
    Dim st As String
    Dim f As Boolean
    Dim buf As Range
    
    For Each r In Selection
        If r.Row = 1 And r.Column = 8 Then
            f = True
            Exit For
        Else
            st = st & r.Value
        End If
    Next r
    If f And st <> "" Then
        On Error Resume Next
        Set buf = Application.InputBox(Prompt:="貼り付けるセルを指定してください。", Type:=8)
        On Error GoTo 0
        If Not buf Is Nothing Then
            If Worksheets("au").Range(buf.Address).Value <> "" Then
                Worksheets("au").Range(buf.Address).Value = Worksheets("au").Range(buf.Address).Value & st
            Else
                Worksheets("au").Range(buf.Address).Value = st
            End If
        End If
    End If
End Sub
id:naranara19

早速のご回答ありがとうございます!いつも助かります。

文章作成のシートのSelectionChangeイベントに次のコードをコピーしてください。

とありましたが、これは文章作成シートのどこに貼り付ければよろしいでしょうか?

標準モジュールでしょうか?何かのマクロにコバンザメすればよろしいでしょうか?

スキル不足で申し訳ございませんが、ご回答よろしくお願いいたします。

2008/05/05 16:44:02
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692008/05/05 16:56:04ここでベストアンサー

ポイント35pt

http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040727.html

通常のマクロは標準モジュールに作りますが、

この場合は文章作成シートが操作されたら(この場合H1セルがクリックされたら)、

それを受けて実行されるコードを書きたいわけです。

上のリンクの(3)のようにしてVBEでシートをダブルクリックした先にそのまま貼り付ければいいです。

id:naranara19

指示していただいたとおり、やったら、うまくいきました。前回といい、今回といいスキルのない私にご丁寧に教えていただいて、本当にありがとうございます。SALINGERさんは素敵な方です。ありがとうございました。

2008/05/05 23:47:22
  • id:SALINGER
    InputBoxメソッドをtype=8(セル範囲の取得)で使う場合、エラートラップしないとキャンセルしたときにエラーがどうしても出るので、わかりづらいコードになっています。
    後から気づいたけど
    If Worksheets("au").Range(buf.Address).Value <> "" Then
      Worksheets("au").Range(buf.Address).Value = Worksheets("au").Range(buf.Address).Value & st
    Else
    Worksheets("au").Range(buf.Address).Value = st
    End If

    Worksheets("au").Range(buf.Address).Value = Worksheets("au").Range(buf.Address).Value & st
    一行でよかったですね。

  • id:naranara19
    ご丁寧にありがとうございます。本当にご丁寧な方です。多謝。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません