So-net無料ブログ作成
検索選択

Excel VBA エクセルを終了する [Excel]

Excelを終了させるにはQuitメソッドを使います。
  If Application.Workbooks.Count = 1 Then
    Application.Quit
  Else
    ThisWorkbook.Close
  End If
上のコードでは開いているブックが自分だけの場合はエクセルを終了させます。
それ以外の場合はコードの書いてあるブックのみ閉じます。

Quitメソッドの場合もブックが更新されていると保存の確認のダイアログが出ます。
ダイアログを出したくない場合は事前にCloseメソッドで書いた方法で処理をするか DisplayAlertsプロパティを設定します。
DisplayAlertsプロパティにFalseを設定するとメッセージが表示されません。
  Application.DisplayAlerts = False
  Application.Quit

Excel VBA ブックを閉じる [Excel]

ブックを閉じる場合Closeメソッドを使います。

ThisWorkbook.Close
変更があった場合は保存するかどうか確認のダイアログが出ます。

ThisWorkbook.Close SaveChanges:=False
変更を保存しないで閉じます。ダイアログも出ません。

ThisWorkbook.Close SaveChanges:=True, FileName:="test.xls"
変更があった場合「test.xls」というファイル名で保存して閉じます。
ファイル名を指定しないと上書き保存されます。

変更があるかないかは「Saved」プロパティで知ることが出来ます。
ブール型でTrueが変更なしです。
代入も出来るので下記のように書くことで確認なしの保存しないで終了ができます。
ThisWorkbook.Saved = True
ThisWorkbook.Close

Excel VBA マウスカーソルの形を変える [Excel]

ExcelのVBAでマウスポインタの形を変更する方法です。

  Application.Cursor = ポインタを表す定数

定数形状
xlWait砂時計
xlIBeamI字型
xlNorthwestArrow矢印型
xlDefault標準


Excel VBA 印刷の設定 (ページ設定) [Excel]

エクセルのVBAで印刷の設定をするには"PageSetup"オブジェクトを使います。

  With Activesheet.PageSetup
    'プリント範囲の設定
    .PrintArea = ("A1:K30")

    '用紙サイズ xlPaperSizeクラスの定数を指定
    .PaperSize = xlPaperA4 'A4用紙

    '用紙の向き
    .Orientation = xlLandscape '=横  xlPortrait=縦

    '拡大率 10~400%で指定
    .Zoom = 110

    '印刷範囲を指定したページ数に収める
    'Zoomが設定されていると無効
    .FitToPagesTall = 1  '縦
    .FitToPagesWide = 1 '横

    'マージン
    .LeftMargin = Application.CentimetersToPoints(1.5)
    .RightMargin = Application.CentimetersToPoints(1.5)
    .TopMargin = Application.CentimetersToPoints(1.5)
    .BottomMargin = Application.CentimetersToPoints(1)
    .HeaderMargin = Application.CentimetersToPoints(1)
    .FooterMargin = Application.CentimetersToPoints(1)
    'ポイントで指定します。
    'センチをポイントに変換するには CentimetersToPoints
    'インチをポイントに変換するには InchesToPoints を使用します。

    'ヘッダー
    .CenterHeader = "Keep It Simple, Stupid !"

    'フッター
    .RightFooter = "by macoto"

    '中央寄せ
    .CenterHorizontally = True  '水平方向
    .CenterVertically = True    '垂直方向

  End With



Excel VBAのプログラミングのツボとコツがゼッタイにわかる本―最初からそう教えてくれればいいのに!Excel2007/2003対応

Excel VBAのプログラミングのツボとコツがゼッタイにわかる本―最初からそう教えてくれればいいのに!Excel2007/2003対応

  • 作者: 立山 秀利
  • 出版社/メーカー: 秀和システム
  • 発売日: 2007/10
  • メディア: 単行本

Excel VBA MsgBox関数 [Excel]

書式
MsgBox (表示メッセージ, ボタンの種類, タイトル)

表示メッセージ
メッセージボックスに表示される文章です。
改行はVbCr(Chr(13))やVbCrLf(Chr(13) & Chr(10))などを使います。

ボタンの種類
ボタンの種類
定数内容
vbOKOnly0[OK] ボタンのみを表示します。
vbOKCancel1[OK] ボタンと [キャンセル] ボタンを表示します。
vbAbortRetryIgnore2[中止]、[再試行]、および [無視] の 3 つのボタンを表示します。
vbYesNoCancel3[はい]、[いいえ]、および [キャンセル] の 3 つのボタンを表示します。
vbYesNo4[はい] ボタンと [いいえ] ボタンを表示します。
vbRetryCancel5[再試行] ボタンと [キャンセル] ボタンを表示します。

アイコンの種類
定数内容
vbCritical16警告メッセージ アイコンを表示します。
vbQuestion32問い合わせメッセージ アイコンを表示します。
vbExclamation48注意メッセージ アイコンを表示します。
vbInformation64情報メッセージ アイコンを表示します。

デフォルトボタン
定数内容
vbDefaultButton10第 1 ボタンを標準ボタンにします。
vbDefaultButton2256第 2 ボタンを標準ボタンにします。
vbDefaultButton3512第 3 ボタンを標準ボタンにします。
vbDefaultButton4768第 4 ボタンを標準ボタンにします。

ボタンの種類は表示されるボタンやアイコンなどを指定します。
上記の各グループごとに1種類づつ選び、値を足した数値を指定します。
定数で表すこともできます。(vbYesNo+vbQuestion+vbDefaultButton2 など)

タイトル
メッセージボックスのタイトルを指定します。
省略するとアプリケーション名になります。

戻り値
Integer型で押されたボタンの値が返ってきます。
戻り値
定数内容
vbOK1[OK]
vbCancel2[キャンセル]
vbAbort3[中止]
vbRetry4[再試行]
vbIgnore5[無視]
vbYes6[はい]
vbNo7[いいえ]


タグ:Excel VBA MsgBox

Excel VBA エラー処理 [Excel]

エラーが起きたときの処理方法です。

エラー発生時の対応
On Error Goto ラベル又は行番号 ラベルまたは行番号に処理が移ります。
On Error Resume Next エラーの起きた次の行に進みます。
On Error Goto 0 エラートラップを解除します。

エラー処理からの戻り先
Resume エラーが発生した行に戻ります。
Resume Next エラーが発生した次の行に戻ります。
Resume ラベルまたは行 ラベルまたは行に処理が移ります。

例.
Sub ErrTest()

  'エラーが起きたらe_trap1に処理が移ります
  On Error GoTo e_trap1
    MsgBox 100 / 0
    MsgBox "1つめのエラーは回避されました"
  On Error GoTo 0

  'エラーが起きたら次の行に処理が移ります
  On Error Resume Next
    MsgBox 100 / 0 'この行は無視されます
    MsgBox "2つめのエラーは回避されました"
  On Error GoTo 0

  'エラーが起きたらe_trap2に処理が移ります
  On Error GoTo e_trap2
    Dim d As Integer
    d = 0
    MsgBox 100 / d
    MsgBox "3つめのエラーは回避されました"
  On Error GoTo 0

  'エラー処理はされません
  MsgBox 100 / 0
  MsgBox "このメッセージは表示されません"

  'プロシージャを抜けます。
  'この行がないと通常の処理で下のエラートラップが実行されてしまいます。
  Exit Sub

e_trap1:
  'エラーの内容を表示します
  MsgBox Err.Description & chr(13) & _
        "エラー番号は" & Err.Number & "です"

  'エラーの起きた次の行に戻ります
  Resume Next

e_trap2:
  '変数dに10を代入してエラーの起きた行に戻ります
  d = 10
  Resume

End Sub

Errオブジェクトでエラー内容を知ることが出来ます。
エラーの内容で処理を変えることも出来ます。
タグ:エラー Excel VBA

Excel VBA グラフのデータ範囲を変更する [Excel]

  With Charts(1).SeriesCollection(1)

    'グラフの種類 = マーカーのない折れ線グラフ
    .ChartType = xlLine

    'X軸の項目軸ラベル
    .XValues = Sheets("Sheet1").Range("A1:A30")

    'データの指定
    .Values = Sheets("Sheet1").Range("B1:B30")

    '系列名
    .Name = "DATA1"

  End With
SeriesCollectionは系列を示すオブジェクトです。
()内にはインデックス番号か系列名を入れます。

XValuesとValuesには配列が入ります。
配列かrangeオブジェクトで指定します。
配列なので「.Values = .Values.Offset(0,10)」とやるとエラーがでます。
私は配列なのを知らなくてOffsetを使ってエラーがでるので、かなり悩みました。

またSeriesCollectionのFormulaプロパティで設定することも出来ます。
例.
Charts(1).SeriesCollection(1).Formula = "=SERIES(""DATA1"",Sheet1!$A$1:$A$30,Sheet1!$B$1:$B$30,1)"
書式
=SERIES(系列名,X軸項目軸,データ,系列番号)
系列名はダブルクォーテーションで囲みます。
ダブルクォーテーション内なのでダブルクォーテーションでエスケープして「""」となっています。
VBAの流儀のようです。
"=SERIES(" & Chr(34) & "DATA1" & Chr(34) & ",Sheet1!$A$1:$A$30,Sheet1!$B$1:$B$30,1)"
としてもOKです。
系列番号が若い方が先にプロットされ、SeriesCollectionのインデックス番号にもなります。


達人が教える Excelグラフテクニック101 Excel 2007/2003/2002対応

達人が教える Excelグラフテクニック101 Excel 2007/2003/2002対応

  • 作者: 早坂 清志
  • 出版社/メーカー: 毎日コミュニケーションズ
  • 発売日: 2009/07/14
  • メディア: 単行本(ソフトカバー)

Excel VBA スクロールバー、シート見出しの表示、非表示 [Excel]

ExcelのVBAでスクロールバーとシート見出し(タブ)の表示、非表示をコントロールする方法です。

スクロールバーとシート見出しを表示する。
  With ActiveWindow
    .DisplayHorizontalScrollBar = True '水平スクロールバー
    .DisplayVerticalScrollBar = True '垂直スクロールバー
    .DisplayWorkbookTabs = True 'シート見出し
  End With
Falseで非表示になります。
シートごとには設定できずブック全体に適用されます。
またグラフなどがアクティブになっていてもエラーにはなりませんが変更もされないようです。

Excel VBA グラフの参照 [Excel]

グラフへの参照の仕方です。
グラフシートの場合とワークシート上にある場合と2通りあります。

まずグラフシートへの参照
ThisWorkbook.Charts(インデックス番号又はグラフシート名)

ワークシート上にある場合
Thisworkbook.Worksheets("Sheet1").ChartObjects(インデックス番号又はグラフ名).Chart
一旦ChartオブジェクトコンテナになるChartObjectオブジェクトを参照するのがミソです。

ついでに基本的なオブジェクトへの参照も書いておきます。
Application……Excel自身
ThisWorkbook……"ThisWorkbook"が書かれているブック
ActiveWorkbook……アクティブになっているブック
Workbooks(インデックス番号又はファイル名)……インデックス番号は開かれた順に1から振られます。
ActiveWindow……アクティブなウィンドウ
Windows(インデックス番号又はウィンドウ名)……インデックス番号は開かれた順に1から振られます
ActiveSheet……アクティブなシート
WorkSheets(インデックス番号又はシート名)……インデックス番号は左から1,2,3…となっています。

Excel VBA 罫線、行列番号の表示と非表示 [Excel]

ExcelのVBAで罫線と行列番号の表示、非表示をコントロールする方法です。

罫線と行列番号を表示する。
  With ActiveWindow
    .DisplayGridlines = True '罫線
    .DisplayHeadings = True '行列番号
  End With
Falseで非表示になります。
シートごとに設定できます。
またシートにフォーカスがないと(グラフなどがアクティブになっていると)エラーになるので注意が必要です。