• 締切済み

エクセル BVA メッセージボックスの作り方

エクセルを開くと、メッセージボックスで、警告を出したいのですが 出来れば・・文字を2行目のみ中央寄せ。さらに1行と2行の間に行間を2つ程いれたいのですが・・やり方がわかりません。 一応、途中まで作りましたが、 アドバイスの程よろしくお願い致します。 ---------------------------------- Private Sub Workbook_Open() Dim strMsg1 As String Dim strMsg2 As String strMsg1 = "この ファイルは上書き保存できません " strMsg2 = "作成者: ○○" MsgBox strMsg1 & vbCrLf & strMsg2 End Sub ------------------------------------

noname#31045
noname#31045

みんなの回答

  • project-a
  • ベストアンサー率54% (107/195)
回答No.1

MsgBoxでは、メッセージのセンタリングは出来ないので、 2行目の文字数を取得して、センタリングされるように前方にスペースを追加するような処理を入れてみてはいかがでしょうか?

noname#31045
質問者

お礼

パソコンのトラブルで お礼が遅くなりました。 アドバイス ありがとうございます★

関連するQ&A

  • エクセルVBAにて保存するとき

    Private Sub Workbook_BeforeClose(Cancel As Boolean) If MsgBox("エクセルを終了してもよろしいですか?", vbYesNo) = vbNo Then Cancel = True Exit Sub End If Application.DisplayAlerts = False Application.Quit End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "そのボタンでは保存できません。" & vbCrLf & _ "雛形は残しておきましょう" & vbCrLf & _ "" & vbCrLf & _ "ツールバーの「マクロなし出力」から保存できます。" Cancel = True End Sub という二つのマクロをThisworkbookにいれてあるんですが、 この二つを有効(今は2つ目を'でコメント状態にしてあるので保存可)にすると保存できなくて困っています。 二つを有効にした時はどのようにほぞんすればいいですか?

  • VBA のメッセージボックスに・・・

    Private Sub CommandButton1_Click() Dim intMsg As Integer Dim x As Double x = Val(Cells(3, 2).Value) / Val(Cells(2, 2).Value) ^ 2 Cells(2, 5) = x intMsg = MsgBox("指数は&x&" & vbCrLf & "&z&です。") Select Case x Case 0 To 18 MsgBox "やせぎみ" Case 19 To 25 MsgBox "普通" Case 26 To 30 MsgBox "太り気味" Case Else MsgBox "危険" End Select End Sub ってプログラムを組んだのですが メッセージボックスに結果が表示されません。 計算して出た値を、メッセージボックス内のxとzで表示させたいのですが・・・ &ではさむ?だけではだめなんですか?

  • Outlook2007送信前の宛先確認のVBAにて

    Outlook2007 送信前の宛先確認のマクロを設定したいと考えています。 Option Explicit Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) On Error GoTo Ex ception Dim strCC strCC = vbCrLf Dim objRec As Recipients For Each objRec In Item.Recipients strCC = strCC & objRec.Name & vbCrLf Next Dim strMsg As String strMsg = "件名:" & Item.Subject & vbCrLf & _ _ strCC & vbCrLf & _ _ "上記の宛先に、メールを送信してもよろしいですか?" If MsgBox(strMsg, vbExclamation + vbYesNo + vbDefaultButton2) <> vbYes Then Cancel = True End If On Error GoTo 0 Exit Sub Exception: MsgBox CStr(Err.Number) & ":" & Err.Description, vbOkOnly + vbCritical Cancel = True Exit Sub これだけだと、End subが必要ですというポップアップがあがり、付加すると『型が一致しません』というポップアップがあがってしまいます。 どうすれば良いか教えていただけますか? あと、宛先をグループ登録してる場合、グループ登録している宛先を氏名で表示する方法はありますでしょうか??

  • エクセルBVAが時々うまくいくのですが・・・

    「ExcelVBAでIEを思いのままに操作できるプログラミング術」という本の中の [[http://store.tsutaya.co.jp/item/rental_dvd/089704291.html]このページの"店舗を指定して在庫検索"ボタンを押す、という動作をさせるマクロ]について質問があります。 本を見ながら写してみました。 ページを開いた上でマクロを動かすと"店舗を指定して在庫検索"ボタン押され、画面が変わるマクロです。 基本的に動かないのですが([完了しました]というメッセージのみが出てきます)、 ごく稀に(頻度としては10回に1回ほど)正常に動作します ([クリックしました]とメッセージが表示され、画面が変わり[完了しました]というメッセージが出てくる)。 なぜ時々うまく動作するのか分かる方いらっしゃいましたら教えてください。 よろしくお願いいたします。 マクロの内容は下のような内容です。 --------------------------------- Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwmilliseconds As Long) --------------------------------- Private Function getIe(argTitle As String) As InternetExplorer Dim ie As InternetExplorer Dim sh As Object Dim win As Object Dim documentTitle As String Set sh = CreateObject("Shell.Application") For Each win In sh.Windows documentTitle = "" On Error Resume Next documentTitle = win.document.Title On Error GoTo 0 If InStr(documentTitle, argTitle) > 0 Then Set ie = win Exit For End If Next Set getIe = ie End Function --------------------------------- Private Sub waitBrowsing(ie As InternetExplorer) Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE Sleep 1 DoEvents Loop End Sub --------------------------------- Private Sub getStock() Dim ie As InternetExplorer Set ie = getIe("TSUTAYA") Dim htdoc As HTMLDocument Set htdoc = ie.document Dim img As HTMLImg For Each img In htdoc.getElementsByTagName("IMG") If InStr(img.alt, "店舗を指定して在庫検索") > 0 Then img.Click MsgBox "クリックしました" Exit For End If Next MsgBox "完了しました" End Sub ---------------------------------

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

    行を選択し、関数を数値に変換するために下記のようなマクロを作成しました。 選択する行数が少ないと実行でるのですが、一度にたくさんの行を選択すると下のようなエラーが返されます。 「実行時エラー"424"」オブジェクトが必要です。 どこが間違いなのか教えて頂ければ助かります。 Sub TextValue() '選択された行範囲をデータに変換します。 Dim rc As Integer Dim rngCell As Range Dim sMsg As String rc = MsgBox("データに変換しますか?", vbOKCancel) If rc = vbCancel Then Exit Sub sMsg = "変換する範囲を選択して下さい。" Set rngCell = Application.InputBox(Prompt:=sMsg, Type:=8) rc = MsgBox("選択されている範囲の関数を" & vbCrLf & "データに変換します。" & vbCrLf & _ "選択された行範囲は " & rngCell.Address(0, 0) & vbCrLf, _ vbOKCancel, "処理を確認してください。") If rc = vbCancel Then Exit Sub rngCell.Select Selection.Value = Selection.Value End Sub Excel2002  OSはXPです。 宜しくお願い致します。

  • VBからOracle接続が出来ません。

    こんにちは。 VisualBasic6.0EnterprizeEdition から Oracle8i の接続を試みております。 接続が出来ません。コードは本のものをそのまま書いたので、間違いはないと思います。 Private Function OraOPN() As Boolean Dim strDB As String * 30 'サービス名 Dim strUID As String * 30 'ユーザー名 Dim strPWD As String * 30 'パスワード Dim strUP As String Dim strMSG As String 'エラー時のメッセージ On Error GoTo Ora_Error strDB = Trim(txtLogon(2).Text) strUID = Trim(txtLogon(0).Text) strPWD = Trim(txtLogon(1).Text) strUP = strUID & "/" & strPWD strMSG = "データベースへの接続ができません" Set OraSession = CreateObject("OracleInProcServer.XOraSession") Set OraDatabase = OraSession.OpenDatabase(strDB, strUP, &H1&) OraOPN = True Exit Function Ora_Error: OraOPN = False Call MsgBox(strMSG & vbCrLf & " システム管理者に連絡してください" & vbCrLf & vbCrLf & "", vbCritical) End End Function 以上のコードで、接続できません。本に書いてあるとおりそのままのコードです。オラクルサーバとVBプログラムは同一マシン上に置いてあります。 私は、Java専門でVBはわかりません。誰かわかる方がいたら、教えてください。よろしくお願いします。

  • エクセルテーブルをアクセステーブル取込む

    エクセルで作成したテーブルデータを取り込むときに余分に空白のレコードが取り込まれてしまうんですが原因が分かりません。 下記コードで処理してます。 Dim strac As String Dim strxls As String Dim strrange As String Dim strMsg As String strac = "T_障害票マスタ" 'Accessテーブルを指定します。 strxls = テキスト0 'エクセルファイルを指定します。 strrange = "T_障害票!" 'データ入力のシート名とセル範囲を指定します。 strMsg = "エクセルファイル" & strxls & " を、Accessファイル " & strac & _ "として、データ入力を行います。" & _ "よろしければ、OKをクリックして下さい。" 'MsgBoxのメッセージ If strxls = "" Then MsgBox "ファイルを選択して下さい。" 'テキストボックスの確認 Exit Sub End If 'DoCmd.DeleteObject acTable, strac 'テーブルを削除します。 If MsgBox(strMsg, vbOKCancel, "import") = vbOK Then '最初のデータをフィールド名として使います。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _ strac, strxls, True, strrange MsgBox "インポートは、正常に完了しました。" End If Exit Sub なお取り込むテーブルデータはフィールド行を抜かして常に1レコードだけです。 アクセスでは既存のテーブルに保存してます。 詳しい方お願いします。

  • VBAの構文

    Access2002を使用しています。 VBAにて、クエリの結果をメール本文に書き出したいのですが 宜しくお願いします。 【使用するクエリ】 クエリ名:果物クエリ(選択クエリ) フィールド項目:日付、注文者、発送先、電話番号、品名、数量 【現在の内容】 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click Dim stDocName As String Dim strsubject As String Dim strmailto As String Dim strmailto2 As String Dim strtext0 As String Dim strText1 As String Dim strText2 As String Dim strText3 As String Dim strText4 As String Dim strText5 As String Dim strtext6 As String Dim strtext7 As String Dim strtext8 As String Dim strtext9 As String strmailto = Me.電子メール_アドレス strsubject = "商品発送のお知らせ" strText1 = Me.氏名 & " 様" strText2 = "いつもお世話になります、第一青果です。" strText3 = "以下の商品を発送致しましたのでご確認下さいませ。 " strtext0 = "---------------------------------" strText4 = "何でも新鮮!" strText5 = "第一青果" strtext6 = "担当:山田 太郎" strtext7 = "mailto:info@808yaoya.net" strtext8 = "http://808yaoya.net" strtext9 = ★ここからクエリ内の「品名」と「数量」を書き出したい!★ ★以下、現在はレポートをエクセルファイルにして添付するようにしている★ stDocName = ChrW(32013) & ChrW(21697) & ChrW(12524) & ChrW(12509) & ChrW(12540) & ChrW(12488) DoCmd.SendObject acReport, stDocName, , strmailto, , , strsubject, strText1 & vbCrLf & vbCrLf & strText2 & _ vbCrLf & strText3 & vbCrLf & vbCrLf & strtext0 & vbCrLf & strText4 & vbCrLf & strText5 & vbCrLf & strtext6 & vbCrLf & _ strtext7 & vbCrLf & strtext8 & vbCrLf & strtext0 & vbCrLf & strtext9, True Exit_コマンド1_Click: Exit Sub Err_コマンド1_Click: MsgBox Err.Description Resume Exit_コマンド1_Click End Sub

  • Accessへのエクセルデータインポート

    Accessへのエクセルデータインポート 環境:Access2000/WinXP アクセス2000の特定テーブルへ、エクセルデータをインポートするよう組んだのですが、新しくデータを追加すると、これより前に入っていたデータがレコードを残して消えてしまいました。 新規データを追加した際にただの追加としたいのですがどこがおかしいのでしょうか。 Private Sub データ登録_Click() Dim objExcel As Object Dim varFilePath As Variant Dim bln As Boolean Dim varac As Variant Dim varxls As Variant Dim strrange As String Dim strmsg As String varac = "受講者情報一覧" Set objExcel = CreateObject("Excel.Application") varFilePath = objExcel.GetOpenFilename("Microsfot Exel (*.xls), *.xls", , "xls選択") If varFilePath <> False Then varxls = varFilePath Else Exit Sub End If Set objExcel = Nothing varxls = varFilePath strrange = "" strmsg = "Excelファイル" & varxls & " を、Accessテーブル " & varac & "へ、インポートします。" DoCmd.DeleteObject acTable, varac If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, varac, varxls, True MsgBox "正常にインポート完了しました。" End If Exit Sub エラー: MsgBox "予期せぬエラーが発生しました。" & Chr(13) & "エラー番号:" & Err.Number & Chr(13) & _ "エラー内容:" & Err.Description, vbCritical Exit Sub End Sub

  • メッセージBOXの「はい」「いいえ」の処理について

    お世話になっております。 エクセルマクロで処理を行うときに メッセージBOXにて「はい」か「いいえ」のボタンを押して 実行か中断の処理を行なっていたいのですが、 「いいえ」を押しても処理が実行されてしまいます。 以下で作成しております。 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub IP呼び出し() Dim keizoku As Integer Dim rc As Long rc = MsgBox("処理を続けますか?", vbYesNo + vbQuestion) If rc = vbYes Then MsgBox "処理を続けます", vbInformation Else MsgBox "処理を中止します", vbCritical End If Dim Wsh, wExec, cmd, rRes, i, j Dim sBuf() As String Set Wsh = CreateObject("WScript.Shell") For i = 2 To Cells(Rows.Count, 3).End(xlUp).Row Set wExec = Wsh.exec("%ComSpec% /c nslookup " & Cells(i, 3)) Do While wExec.Status = 0 DoEvents Loop Sleep 1 rRes = wExec.StdOut.ReadAll 'MsgBox rRes sBuf = Split(rRes, vbCrLf) For j = 0 To UBound(sBuf) If Left(sBuf(j), 5) = "Name:" Or Left(sBuf(j), 3) = "名前:" Then Cells(i, 18) = Trim(Right(sBuf(j), Len(sBuf(j)) - 5)) End If Next j Next i MsgBox "ドメインを確認して下さい。", vbOKOnly, "マクロが終了しました" End Sub Excel2010で行なっております。 ご教授の程、よろしくお願いいたします。

専門家に質問してみよう