• 締切済み

エクセル2000マクロ操作

下記のマクロを記述していますが Dim msg msg = MsgBox("データ入力は正しいですか。?", 1, "データ入力確認") メッセージボックスの表示位置を真ん中でなくて、決めた位置に表示を変えることは できるのでしょうか?操作方法があれば教えてください。 出来たらマクロ操作でお願いします。

noname#72697
noname#72697

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

WindowsAPIを使用するとできます。 1.SetWindowsHookEx という関数を使用しメッセージボックスをフックする用意2.MSGBOXを呼ぶ をする。 以下フック関数内での処理 3.GetDesktopWindowでデスクトップのハンドルを得る 4.GetWindowRectでデスクトップの領域座標(解像度)を得て、中心座標を得る。 5.フックした関数の中で、ダイアログの表示位置を設定する。 といった処理が必要になります。 必要であればサンプルを記述しますが、API関数を使用したことがなければ、ちょっと理解しづらいかも知れません。 オリジナルのフォームを作成したほうが楽かも?

  • kougasha
  • ベストアンサー率32% (34/105)
回答No.3

メッセージボックスではなく、同じような 見かけのユーザーフォームを作成したらい かがですか? LoadしてShowする前に、Moveしてやれば お望みの位置に表示できますよね。 もちろん、メッセージボックスとしての機 能を実現するために、多少フォーム内の処 理は記述しなくてはなりませんけどね。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 多分出来ません。私は思いつきません。少なくともVBでは出来ません。 そこで、フリーウェアのOCXなどを使用する方法があります。 下記に1例としてURLを載せておきます。 ただし、私は試してないので、VBAで使えるかどうかはわかりません。 下記以外にもベクターなどで検索して探してみて下さい。 では。

参考URL:
http://www.vector.co.jp/soft/win95/prog/se195104.html
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

Excel95、97、2000と使っていますが、できないと思っています。新しいバージョンや何か技があるかもしれませんが。 どうしても必要なときは、ユーザーフォームを使って、メッセージボックスと同じようなダイアログを作ったこともありますが、今は無頓着になってきました。真ん中にボンと出しています。 ご参考に。(ならない?)

関連するQ&A

  • エクセルのマクロでシート名の検索をしたい

    マクロの初心者です。お教え下さい。 ブックの中に複数のシートがあります。 どのシートにも「個人別データ」という名前のシートが無い時に 「個人別データのシートがありません。」とメッセージボックスを 表示させ、マクロを終了したいのです。 下記の通り記述すると、個人別データの シートがあっても「個人別データのシートがありません。」と メッセージボックスが表示されてしまい、うまく行きません。 ご教授下さい。  Dim Sh As Worksheet For Each Sh In Sheets If Not Sh.Name = "個人別データ" Then MsgBox "個人別データのシートがありません。" Exit Sub End If Next

  • エクセルのVBAのエラー

    早速ですが、よろしくお願い致します。 単純なマクロですが、下記の記述は実行すると、ただメッセージボックスが表示される…つもりです。 タイトルが「確認メッセージ」、文字は「完了しました」、ボタンは「OK」のみです。 しかし、エラーになってしまいます。(コンパイルエラー 構文エラー) Sub test()   MsgBox ("完了しました",vbOKOnly,"確認メッセージ") End Sub どこが間違っているのでしょうか?? ご教授をお願い致します。

  • Excel Pivot 名前の定義の値をマクロで取得

    こんにちは。いつも参考にさせていただいています。 マクロでPivotを自動更新する記述をしています。 データが入力されているシートに 名前の定義をして"データ"と名前をつけ、参照範囲を以下のとおり設定しました。 =OFFSET($A$1,0,0,COUNTA($A:$A),COUNTA($1:$1)) Pivotが表示されるシートのマクロに下記のように記述して、 自動的に更新ができることを確認できました。 Private Sub Worksheet_Activate() Range("A1").Select ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _ "データ" End Sub マクロ自体は問題なく動くのですが、 目でも確認をとりたいため、MsgBoxを追加して、現在選択されているデータ範囲を表示させたいと考えています。 例) 「データ範囲は$A$1:$D$150に変更されました」 そこで、 MsgBox "データ範囲は" & データ & "に変更されました" という一文を上記に追加してみましたが、データの部分でセルの範囲を取得できませんでした。 "データ"としてもダメで、名前の定義で指定された範囲の値を取得する方法がわかりません。 マクロで可能な仕様なのかもわからないのですが、 どなたか解決法をご存知でしたら教えていただけないでしょうか。 よろしくお願いします。

  • 空白セルのメッセージボックスでの知らせるマクロ

    はじめまして。下記のExcelについて教えてください。 セルA1からA10の間にデータが入力されているセル、入力されていないセルが混在している場合、データが入力されていないセルをメッセージボックスで知らせるマクロの作成の仕方を教えてください。 空白セルが2つある場合はメッセージボックスは2回表示されます。 ずっと考えていても、分からなくて。。。どうか教えてください。

  • エクセルのマクロについて

    エクセルでマクロを作成しました。 インプットボックスに日付を入力するのですが、インプットボックスのキャンセル時に、マクロを停止したいのですが、色々試しましたが、上手く出来ません。(IfやOn Erorrなど)どの様な方法があるでしょうか? 入力する日付は○/1と入力しています。 Dim a As Date a = InputBOx("日付を入力してください") この様なコードで開始しています。

  • エクセルVBAでメッセージを表示する

    エクセルVBAでメッセージを表示する時は、 Msgbox "表示する内容" と記述しますが、これだと[OK]をクリックするまで エクセル本体が全く操作できなくなってしまいます。 メッセージボックスを表示させた状態で、エクセルを操作できるようにすることは 出来ますでしょうか?

  • エクセルのマクロの操作を記録するについて教えて下さい。

    エクセルのマクロの操作を記録するについて教えて下さい。 マクロ・VBAを勉強しはじめた超初心者です。 毎日、CSVの新しいデータを取得します。 その中で、列の並び変えや文字の太さ、ここは¥マークをつけたい など編集したい事があるのですが、 それを毎日していると時間がかかってしまうので自動化したいので マクロというものを知りました。 実際に、新しいCSVファイルを開いて、 マクロの記憶→上記の編集操作→マクロ記憶終了→保存 とすると、行った動作ではなく、 今現に表示されているCSVの文字データも記憶されてしまいますよね?? 行った動作(列の並び変えや書式変更、関数入力)という行動”だけ”を 自動化するにはどうしたら良いのでしょうか? 毎日取得するCSVデータは 列の項目は一緒ですが、その中で数字や住所が違うデータです。 分かりにくい文章で申し訳ありませんが よろしくお願い致します。

  • エクセルVBA

    エクセルVBAのコードについて質問です。エクセル初心者です。 Windows10で32bit版のエクセル2010を使っています。 1.エクセルのマクロは32bit版でも64bit版にも対応できるようコードを組んでいるのですが、 32bitで動いているのか64bitで動いているのかどのように確かめたらよいでしょうか? あるマクロの途中に #If VBA7 And win64 Then MsgBox ” 64bit ” #Else またはIf VBA7 And win32 MsgBox ”32bit” #End If を組み込むと、If分の終わりには If分の最後に#EndIfが必要です、と表示されて(EndIfを書いているのに) エラーになります。 2.エクセルマクロをIEと連携させて使っています。 IEを操作させている途中でエクセルのメッセージBoxを最前面表示させるには どうしたらよいでしょうか? IEで特定の操作をしたら、エクセルが最前面に出て、OKボタン付きのメッセージBoxが表示され、OKボタンを押すとIEを操作する という動作をコードに書いています。 コードを書いた直後は、IE上での特定の操作のあとメッセージBoxが適切に最前面表示されますが、 一度保存し閉じてファイルを開き直しマクロを実行すると、メッセージBoxは最前面に出てくれません。 検討したコードは 1. SetForegroundWindow 2.VBA AppActivate. Microsoft Excel. Capture 3.AppActivate Microsoft です。いずれのコードを書いた場合も、保存まではうまくメッセージBoxに回答できるが 保存しファイルを開き直してマクロを実行するとメッセージBoxはIEの後ろに隠れたままであり、エクセルを選択しないと最前面表示されません。 しかし一応最前面表示されることもあることから、マクロを一度実行するごとにエクセル内のデータが変わる可能性も考えられす。

  • データの置換 エクセルの操作とVBAマクロ…???

    A列に 17:00 と表示されているセルを 16:45 に 置換したいです。 普通にエクセルの操作(編集からダイアログボックスを表示して)行うと普通に実行されるのですが、その操作を記録したマクロを実行しても何も起こらないのです。(エラーも出ません) VBAには↓のとおり記録されました。 Columns("A:A").Select Selection.Replace What:="17:00", Replacement:="16:45", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False 実は、17:00 と表示されているセルに入力されているデータは、17:00:00 であり、ユーザー定義の書式設定で h:mm の形式で表示されています。 元データの書式設定を 17:00:00 (時刻)に変えてもやはり同様で、エクセル操作ではうまくいきますがマクロだと何も起こりません。 試しに元データの書式設定を標準(シリアル値)に変えてやってみるとマクロでも置換されましたが、実際の業務では大変不便そうです。 マクロを実行する時にはユーザー定義や時刻の書式は認識されないのでしょうか? それとも書式に原因を求めるのが間違ってるのでしょうか?

  • エクセルVBAにて

    エクセルのVBAでMsgbox関数を使用して Msgbox("計算が終わりました")というように記述 したのですが、マクロを実行してもメッセージが 表示されません。 どなたか教えてください。 よろしくお願いします。

専門家に質問してみよう