アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります。(バージョン365です。)
msgbox を表示させたまま、シートを上下左右動かしたいのですが、どうすればできますか?
私の環境では、msgbox を表示させたままでは動かせないのです。
タイトル通りですが、マクロを実行中に、処理結果をシートに表示させ、msgbox で「この内容でOK?」と表示させたまま、(処理結果がシートの上下左右に隠れた部分があるので確認のため)シートを上下左右動かしたいのですが、どうすればできますか?よろしくお願いします。

A 回答 (6件)

No.4、No.5です。


>最初r のところでエラー(エラーの内容は覚えていません)が発生し、・・・
大変失礼しました。
Dim r As Intger
が原因です。Integerの「e」が消えています。
投稿するときに何かの拍子にdeleteキーに触れてしまったようです。
前回回答でも
「とりあえず、36の環境をお持ちである」
と投稿してありますが、365の「5」が消えています。
ここも、投稿するときに何かの拍子にdeleteキーに触れてしまったようです。
さて、
>popup を本で調べると、『「Windows Script Host Object Model」への参照設定を
>行う必要があります。』と記載されています。この参照設定はしていない
>(実際チェックボックスに☑はされていません)のですが正常に動いています。
>参照設定しなくとも大丈夫でしょうか?
とのお尋ねですが、以下のURLに解説があります。
https://www.relief.jp/docs/excel-vba-automatical …
参照設定はしてもしなくてもよいというのが結論です。
参照設定していないことを前提にするとCreateObject関数で
Dim WSH As Object
Set WSH = CreateObject("WScript.Shell")
を記述しますが、
参照設定を行って
Dim WSH As IWshRuntimeLibrary.WshShell
Set WSH = New IWshRuntimeLibrary.WshShell
と記述してもよいということになります。
    • good
    • 0
この回答へのお礼

詳しい説明をいただき感謝しています。
r でのエラー、ans に置き換えるとき Integerと何の疑いもなく思い込んで打ち込んでいたようです。

>参照設定はしてもしなくてもよいというのが結論です。
ご提示のURLも読みました。
よく分かりました、ありがとうございました。

お礼日時:2021/06/11 13:49

No.4です。


popup自体は365以前のバージョンでも問題なく使用できます。
ただし、「Ctrl+Shift+マウススクロール」でマウススクロールが横方向にも対応できると確認できているのは、EXCEL2019と365だけで他のバージョンでも横スクロールできるのか確認がとれていません。
なので、とりあえず、36の環境をお持ちであるということで回答した次第です。
マウススクロールできない場合にスクロールバーをスライドさせるなどの方法をとると、popupがタスクバーに隠れてしまうという問題が起こります。
マウススクロールについては、Microsoft製のマウスを使うとかプラグインをいれるなどの方法もあるようです。
    • good
    • 0
この回答へのお礼

ありがとうございます。№4でお示しいただいたコードを実行しましたところ、最初 r のところでエラー(エラーの内容は覚えていません)が発生し、r を別の例えばansに置き換えたところ正常に作動しました。
本日、昨夜のans を r  に戻して実行しましたがエラーは出ませんでした。参考にさせていただきます。
popup を本で調べると、『「Windows Script Host Object Model」への参照設定を行う必要があります。』と記載されています。この参照設定はしていない(実際チェックボックスに☑はされていません)のですが正常に動いています。
参照設定しなくとも大丈夫でしょうか?
もう少しおつきあいしていただけますか?よろしくお願いします。

お礼日時:2021/06/11 11:34

365の環境ということなので、以下の方法で実現できると思います。


MsgBoxの代わりにPopupを使いますが、使い方はMsgBoxと殆ど変わりません。
サンプルコードは以下のようなものです。
Sub Sample()
Dim WSH As Object
Dim r As Intger
Set WSH = CreateObject("WScript.Shell")
r = WSH.Popup("この内容でOK?", , "MsgBox", vbYesNo)
'rの値で処理を分ける
Set WSH = Nothing
End Sub
Popupが表示されている状況で、マウスによる画面スクロールが可能です。
左右へのスクロールは
Ctrl+Shift+マウススクロールボタン
で実現できます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
Popupですか?初めて知りました。
一度試してみます。
因みに、365以前のバージョンではできないのですか?

お礼日時:2021/06/10 19:58

MsgBoxをモードレスにすることはできません。


モーダルでは(OK/Cancelが押されるまで)次のステートメントが実行されませんが、モードレスを待機することはできません。モードレスでは例えば×を押してExcelを閉じることもできますが、モーダルでは通常そのダイアログ以外の操作ができません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やはり無理な話だったのですね。
皆さんの指摘の通りユーザーフォームなど、別の方法を考えます。

お礼日時:2021/06/10 17:35

こんにちは


>シートをを上下左右動かしたいのですが、どうすればできますか?

ユーザーフォームをMsgbox代わりに表示するだけで良ければ
フォームにラベルを設置して(必要ならボタンも)
 vbModelessで表示すればよいだけです。

参考 フォーム作成
https://www.atmarkit.co.jp/ait/articles/1410/20/ …

UserForm1の場合
標準モジュールに(メッセージボックス表示部分)
UserForm1.Show vbModeless

コマンドボタンを設置した場合
フォームモジュールに
Private Sub CommandButton1_Click()
Unload Me
End Sub

RefEdit コントロールを使用する場合
vbModeless は厳禁です。バグる可能性があります
    • good
    • 0
この回答へのお礼

ありがとうございます。
msgbox  では、やはり無理ということですね。
UserFormも考えてみます。

お礼日時:2021/06/10 13:47

MsgBoxの代わりにUserFormに(メッセージと)RefEditを付けて.Show(vbModal)する方法が簡単だと思いま

「マクロを実行中に、msgbox を表示さ」の回答画像1
    • good
    • 1
この回答へのお礼

ありがとうございます。
msgbox  では、やはり無理な様子ですか?。
UserFormも考えてみます。

お礼日時:2021/06/10 12:11

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A