お世話になっております。
エクセル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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/04/21 13:46
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) エクセルのマクロの有効について 4 2023/08/03 11:40
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Excel(エクセル) エクセルVBA 任意のセルの選択時、指定のセルの値を表示 1 2023/04/21 08:13
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
マクロを実行中に、msgbox を表示させたまま、ワークシートを上下左右に移動表示させたい。
Excel(エクセル)
-
メッセージボックスで1025文字以上を扱う
Visual Basic(VBA)
-
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
-
4
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
5
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
8
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
9
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
10
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
11
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
12
Excel VBAで、ユーザーフォームをモードレス表示している間、処理を止めるには?
Visual Basic(VBA)
-
13
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
14
VBAでの一時停止と再開の方法
その他(プログラミング・Web制作)
-
15
配列の参照渡しで型が一致しません。
Visual Basic(VBA)
-
16
vbaでmsgboxの位置を指定
PowerPoint(パワーポイント)
-
17
VBAもしくはVB6:クラスの中でクラスは使える?
Visual Basic(VBA)
-
18
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセル 文字数 多い順 並...
-
エクセルで最初のスペースまで...
-
エクセルで文字が混じった数字...
-
オートフィルターをかけ、#N/A...
-
基準となる列を参照して、別の...
-
2つのエクセルのデータを同じよ...
-
エクセル 同じ値を探して隣の...
-
エクセル 時間帯の重複の有無
-
vb.net EXCEL ウィンドウ枠の固...
-
エクセル(勝手に太字になる)
-
Excel、市から登録している住所...
-
VBAで文字列を数値に変換したい
-
エクセルの表から正の数、負の...
-
エクセルで、列の空欄に隣の列...
-
VBAでセル入力の数式に変数を用...
-
A列がない・・・A列が非表示に...
-
50人を数回、グループ分けする...
-
ワードの表で離れた列の幅を一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
2つのエクセルのデータを同じよ...
-
エクセルで最初のスペースまで...
-
エクセルVBA、別ブックへ転記す...
-
エクセル 文字数 多い順 並...
-
エクセル(勝手に太字になる)
-
VBAで文字列を数値に変換したい
-
エクセルで文字が混じった数字...
-
エクセルの表から正の数、負の...
-
「B列が日曜の場合」C列に/...
-
Excelで半角の文字を含むセルを...
-
エクセルの並び変えで、空白セ...
-
Excel、市から登録している住所...
-
エクセル 同じ値を探して隣の...
-
EXCELで 一桁の数値を二桁に
-
エクセル初心者です 関数の入れ...
-
A列がない・・・A列が非表示に...
-
オートフィルターをかけ、#N/A...
-
エクセルで、列の空欄に隣の列...
おすすめ情報