
お世話になっております。
エクセルVBAにより、メッセージボックスを表示させた場合についてお尋ねいたします。
マクロ上にて、にある項目をINPUTBOXにて対象の列を選択して、それをMSGBOXにて”はい”もしくは”いいえ”にて確認する形式にしているのですが、選択した列が画面上見えない場合もあるのですが、その場合画面をスクロールして対象列が正しいのかを確認したいのですが、MSGBOXがアクティブになっており、スクロールさせる事ができなくて
困っております。そもそもできるのかどうかすら
わからないので、エクセルの仕様上それはできないのであれば、しょうがないのですが、もし可能であれば
ご教授ください。
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
>画面をスクロールして対象列が正しいのかを確認したい
もちろん、自作 Msgbox フォームを作って Modeless 表示してもよいのですが、手間がかかりますね。
今回の件では、「入力のときにスクロールできれば、確認しながら選択できるのでOK」みたいです。それでしたら、
1. Input関数ではなく、Inputメソッドの Type:=8 を使う
2. UserFormなら RefEditコントロール を使う
でクリアできそうです。サンプルコードを示しますが、長いのはコードの中に解説を書いているためですから、とりあえず、コピー&ペーストして動作させて見て下さい。
入力のときに、スクロールさせて確認できます。
Sub Sample()
InputColumn:
'入力--------------------------------------------------------
'Inputメソッドを利用
'[キャンセル]ボタン--> Nothing になるので Setステートメントで
'エラーが発生する。そこで On Error Resume Next でエラーが発生
'しても処理を続行させる
'------------------------------------------------------------
On Error Resume Next
Set rngCol = Application.InputBox( _
Prompt:="列を選択します", Type:=8)
If rngCol Is Nothing Then Exit Sub
On Error GoTo 0
'正しくRangeがかえされた場合、複数範囲判定 --------------------
'判定方法1:rngCol.Addressの値にカンマが含まれれば連続していない
'判定方法2:rngCol.Columns.Count>1 なら複数列を選択している
'------------------------------------------------------------
If InStr(1, rngCol.Address, ",") > 0 _
Or rngCol.Columns.Count > 1 Then
MsgBox "複数範囲が選択されています", vbCritical, "中止"
Set rngCol = Nothing
GoTo InputColumn '再入力へ
Else
Set rngCol = Columns(rngCol.Column)
End If
'確認 -------------------------------------------------------
'列全体を選択
rngCol.Select
'確認メッセージ
intRes = MsgBox("この列でよろしいですか?", _
vbYesNoCancel + vbInformation, "確認")
Select Case intRes
Case Is = vbNo
Set rngCol = Nothing
GoTo InputColumn '再入力へ
Case Is = vbCancel
Set rngCol = Nothing
Exit Sub '終了
Case Else
End Select
'それ以降の
MsgBox "選択されたのは" & vbCrLf & _
"列:" & rngCol.Address & vbCrLf & _
"列番号:" & rngCol.Column
End Sub
No.1
- 回答日時:
>エクセルの仕様上それはできない
メッセージボックスの仕様です。
自分で同様のフォームを作成して、
UserForm1.Show vbModeless や UserForm1.Show 0
として起動すると、シートの操作が可能になります。
参考URL:http://park11.wakwak.com/~miko/Excel_Note/11-01_ …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
メッセージボックスで1025文字以上を扱う
Visual Basic(VBA)
-
マクロを実行中に、msgbox を表示させたまま、ワークシートを上下左右に移動表示させたい。
Excel(エクセル)
-
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
-
4
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
5
ユーザーフォーム上にアイコンの表示
Visual Basic(VBA)
-
6
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
配列で格納したものをmsgboxで表示する方法について
Access(アクセス)
-
9
Excel VBAで、ユーザーフォームをモードレス表示している間、処理を止めるには?
Visual Basic(VBA)
-
10
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
11
エクセルVBAで一つ上の階層を指定して保存したい
Excel(エクセル)
-
12
VBA 別ブックからコピペしたいのですが、軽くしたいです
Visual Basic(VBA)
-
13
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
14
Excel vba ListBoxについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
エクセルかグーグルスプレッド...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセルのセル内の文字の一部...
-
Excel、市から登録している住所...
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセルで文字が混じった数字...
-
エクセルの項目軸を左寄せにしたい
-
ExcelのVBAで連番を振る。
-
50人を数回、グループ分けする...
-
エクセル 文字数 多い順 並...
-
【画像あり】【関数】指定した...
-
エクセルで一列おきに空白列を...
-
エクセル 時間帯の重複の有無
-
ExcelVBA でリストリストボック...
-
EXCELの列と行はどこまで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つのエクセルのデータを同じよ...
-
PowerPointで表の1つの列だけ...
-
エクセルで二つの数字の小さい...
-
Excelで半角の文字を含むセルを...
-
【画像あり】【関数】指定した...
-
エクセル(勝手に太字になる)
-
エクセルで最初のスペースまで...
-
Excel、市から登録している住所...
-
エクセルの項目軸を左寄せにしたい
-
エクセルのセル内の文字の一部...
-
「B列が日曜の場合」C列に/...
-
妊娠祝い もらったことある
-
EXCELで 一桁の数値を二桁に
-
エクセルで文字が混じった数字...
-
オートフィルターの絞込みをし...
-
エクセルの表から正の数、負の...
-
Excel 文字列を結合するときに...
-
エクセル 文字数 多い順 並...
-
エクセルの並び変えで、空白セ...
-
エクセルで、列の空欄に隣の列...
おすすめ情報