最新閲覧日:

エクセルのマクロでこんなことはできますか?

(1)まずプログラムを実行する。
(2)実行中に、プログラムは「○○○を入力してください」などというメッセージを発し入力待ち状態で停止する。
(3)使用者が指定されたセルに適切な数値などを入力しENTERを押す。
(4)プログラムは実行を再開する。

よろしくお願いします。

A 回答 (4件)

InputBoxもそれなりに使えますが、見た目がちょっとアレなのと、機能が乏しいのとがあるので、も少し凝った入力画面を作りたいときも結構あります。



で、そういうときに使うのが、「ユーザーフォーム」です。
VBAの編集画面を開いて、[挿入]-[ユーザーフォーム]で作成できます。

作成にはある程度のVBAの知識が要求されますが、これが使えると結構便利ですよ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
面白そうですね。いろいろ凝ってみたいと思います。結構凝り性なので…

お礼日時:2001/09/29 19:05

下記の様にInputBoxメソッドを使うと、「入力待ち状態で停止」している状態でワークシートへの入力ができると思いますが・・・こういう主旨でしょうか?



InputBoxメソッドを使えば、使用者は指定されたセルがどこかを意識し、そこを選択し入力する必要もないように思えます。Typeも色々指定できます。ご参考に。

Sub myDataInput()
  '
  ' 処理1・・・
  '
  Range("A1") = Application.InputBox(prompt:="A1に入力する値", Type:=1)
  '
  ' 処理2・・・
  '
  Range("B1") = Application.InputBox(prompt:="B1に入力する文字", Type:=2)
  '
  ' 処理3・・・
  '
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。勉強になりました。
でもsnoopyさんの方が早かったので…ポイントは…ごめんなさい…

お礼日時:2001/09/29 19:03

「入力待ち状態で停止」している状態ではワークシートへの入力はできないので、Inputbox関数を使うことになります。

入力結果を所定のセルに返してあげればOKかと。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("B2") Then Range("B3") = Range("B2") / 2
If Target = Range("C2") Then Range("C3") = InputBox("入力せよ")
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
InputBox関数なるものがあったのですか…!HELPで探しても探し方が悪いのか、難航していたのですが、関連でMsgBox関数の存在も知ることができましたので大変喜んでおります。
ありがとうございました。

お礼日時:2001/09/29 19:00

私も始めたばかりでよくわからないんですが、ifが使えるんじゃないかと思います。



If Sheets("シート名").Range("セル番号") = 数字 then
   続くプログラム
End If

自分で書いといてなんですけど・・・なんかもっと簡単な方法もありそうですね。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
でもこの方法ですと、あらかじめそのセルに数字を入れておかないとダメなのでは?
私がやりたいのは、あるところまで実行させて一旦プログラムを停止させ、それまでの計算結果に応じた数値を入力するというものですので、申し訳ありませんがちょっと無理な気がします。
すみません。

お礼日時:2001/09/29 18:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ