• ベストアンサー

エクセル メッセージボックスの出し方

エクセルでオートシェイプでボタンを作り、ボタンをクリックするとsheet2へデーターが入力されるようにマクロで作りました。 (1)入力ボタンを押したらメッセージボックスで”記録されました”と画面に表したいのですが・・教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.4

Sub 入力()   Dim LastRow As Long   With Worksheets("データ")     LastRow = Worksheets("データ").Range("A" & Rows.Count).End(xlUp).Row + 1             '<- 多分ここにデータを書き込むコードが有るのだと思います     MsgBox "処理が終りました。" 'と、ここに書きます   End With End Sub ---------------------------------- あと、 With Worksheets("データ") が有るので、 LastRow = Worksheets("データ").Range("A"...... の、Worksheets("データ"). は無くても大丈夫じゃないでしょうか LastRow = Range("A" & Rows.Count).End(xlUp).Row + 1 で、動くと思います

pop2003
質問者

お礼

本当にありがつございます。ASIMOVさんの回答でやってみたら出来ました。自分は End Sub の後ろに書いていたため共有出来なかったんでしょうね。まだまだ未熟です。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#2です。良く考えたら、質問が不完全。 どこへ(どのセルに)入力しているのか書いてない。 >データーが入力されるように・・ 入力しないなら、 どんなデータ?定数?現アクチブセルの値? 初心者でも状況を文章でなら説明できるはずだし、できないなら正確な質問はできないわけです。 ーー ボタンをクリックした機会を捉えて、メッセージを出すのは回答のとおりやれば簡単です。 しかしデータを入れてエンタを押したセルを、ボタンを押した機会に 割り出すのはできません。 なぜかというと、データ入力したあとアクチブセルを任意に動かしたり、動かさなくても、入力後に下、横(上、左)へ動くアクチブセルが動く仕組みがあるからです。特殊な例では、VBAで如何様にもできますから。 まあ後者は、無理すればVBAで入力したセルを取れると思いますが。 ーー ですからワークシートのChangeイベントなど使い、Target引数に頼って、セルの値とアドレスを表示できます。 ーー あるいはデータのSheet2のセット先アドレスを入力者にメッセージで伝えたいのかな。 ーー その際、私の質問(補足依頼)の>(1)はSheet2のセルがどこか書いてないのですが、既存入力済み行の直下行かな。 に答えていたいてないのはどうなったのですか。 #1の、お礼のコードでは、今まで入力したA列の次ぎの行に入れるのらしいが。Range=・・がお礼には出てない。 ーー Sheet1のChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then n = Worksheets("Sheet2").Range("A65536").End(xlUp).Row ' MsgBox n Worksheets("Sheet2").Cells(n + 1, "A") = Target MsgBox "Sheet2のA" & n + 1 & "にデータをセット" Else MsgBox "入力対象列以外" End If End Sub Sheet1のA列に入力されるものだけを対象にする例 ーー VBAの学習でもイベントの考えに対処するのは、相当後になります。 しかし初心者の発想はエクセルを使い始めたら、すぐこれができたら (何々したとき、何々を自動でさせる)と思う人が多い。

pop2003
質問者

お礼

迷惑かけてすいません。親切に書いていただきありがとうございます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

ボタンをクリックしたとき、何々する、というのは Clickイベントのプロシージュアーをシートモジュールに作らないとなりません。 中には昔式にOnClick=”ルーチン名"というのもありますが。 例えばSheet1にコマンドボタンを張り付け編集状態で、ダブルクリックして出てくるSheet1のシートモジュールに、 (1)セルに値の設定 と (2)MsgBox ”メッセージ文” を順に並べて書きます。 (1)はSheet2のセルがどこか書いてないのですが、既存入力済み行の直下行かな。

pop2003
質問者

お礼

ありがとうございます。私は初心者です。ので具体的な記述を教えてください。ちなみに入力ボタンをクリックしたら、Sheet2へ記録されます、それと同時にMsgBoxで記録されましたと表示したいです。

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

Msgbox "記録されました" です

pop2003
質問者

お礼

回答ありがとうございます。具体的に記述を教えてください。 Sub 入力() Dim LastRow As Long With Worksheets("データ") LastRow = Worksheets("データ").Range("A" & Rows.Count).End(xlUp).Row + 1 End With End Sub Sub 情報を知らせるメッセージボックス() MsgBox "処理が終りました。" End Sub ちなみにこの様に書いたのですが、作動しません。どうしてですか?

関連するQ&A