Sample Macro  その他・サンプルマクロ Previous Next

2) 単位選択入力 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================

 すぐに役立つエクセルVBAマクロ集    単位選択入力     ★ Copyright(c)1998 Yoshioh Nagai ★

'=================================================================================
Option Explicit
Dim タイトル As String                          'メッセージボックスのタイトル
Dim メッセージ As String                        'メッセージボックスのメッセージ
Dim スタイル As Variant                         'メッセージボックスのスタイル
Dim yesno As Variant                            'メッセージボックスの返答
Dim 上 As Integer                               'シートの上端セルの行番号
Dim 左 As Integer                               'シートの左端セルの列番号
Dim 下 As Integer                               'シートの下端セルの行番号
Dim 右 As Integer                               'シートの右端セルの列番号
'=================================================================================
Sub auto_open()                           'ブックが開かれたときに自動的に実行されるマクロ
    ユーザーが再表示できないようにDBシートを隠す
    Sheets("入出力").Select                     '画面に表示するシートを選ぶ
    入出力シートをクリアする
    Application.ScreenUpdating = False          '画面を更新しない
    タイトル = "選択"
    メッセージ = "インチ表示しますか?" & Chr(13) & "([いいえ] … メートル表示)"
    スタイル = vbYesNo + vbQuestion + vbDefaultButton1 + vbApplicationModal
    yesno = MsgBox(メッセージ, スタイル, タイトル)
    隠したDBシートをもどす
    If yesno = vbYes Then
        Sheets("入出力").Range("D1") = "インチ法"
        Sheets("MtoI").Select                   'シートを選択する
        シートの下端と右端を調べて範囲選択する
    Else
        Sheets("入出力").Range("D1") = "メートル法"
        Sheets("DB").Select
        シートの下端と右端を調べて範囲選択する
    End If
    入出力シートに複写する
    ユーザーが再表示できないようにDBシートを隠す
End Sub
'---------------------------------------------------------------------------------
Private Sub ユーザーが再表示できないようにDBシートを隠す()
    Sheets("DB").Visible = xlVeryHidden
End Sub
'---------------------------------------------------------------------------------
Private Sub 入出力シートをクリアする()
    Sheets("入出力").Select                     'シートを選択する
    上 = 2                                      '基点セルの行番号(A2セルの2)
    左 = 1                                      '基点セルの列番号(A2セルのAの数字表記)
    下 = Range(Cells(上, 左), Cells(上, 左)).End(xlDown).Row       '下端検出
    右 = Range(Cells(上, 左), Cells(上, 左)).End(xlToRight).Column '右端検出
    Range(Cells(上, 左), Cells(下, 右)).ClearContents '検出した範囲の数式と値をクリアする
    Range("D1") = ""                            'メートル法インチ法を表示するセルをクリア
    Range("A1").Select
End Sub
'---------------------------------------------------------------------------------
Private Sub シートの下端と右端を調べて範囲選択する()
    上 = 2
    左 = 1
    下 = Range(Cells(上, 左), Cells(上, 左)).End(xlDown).Row
    右 = Range(Cells(上, 左), Cells(上, 左)).End(xlToRight).Column
    Range(Cells(上, 左), Cells(下, 右)).Select  '検出した範囲を選択
End Sub
'---------------------------------------------------------------------------------
Private Sub 入出力シートに複写する()
        Selection.Copy                          'どちらかのシートからコピー
    Sheets("入出力").Select
        Range("A2").PasteSpecial Paste:=xlFormats '書式を貼り付け
        Range("A2").PasteSpecial Paste:=xlValues '値を貼り付け
        Range("A1").Select
End Sub
'=================================================================================
Sub auto_close()                        'ブックが閉じられたときに自動的に実行されるマクロ
    Application.ScreenUpdating = False          '画面を更新しない
    タイトル = "確認"
    メッセージ = "作業結果をデータベースに反映しますか"
    スタイル = vbYesNo + vbQuestion + vbDefaultButton1 + vbApplicationModal
    yesno = MsgBox(メッセージ, スタイル, タイトル)
    If yesno = vbYes Then
        If Sheets("入出力").Range("D1") = "インチ法" Then
            Sheets("ItoM").Select               'インチをメートルに換算したシート
        Else
            Sheets("入出力").Select             'メートル法で入力されているシート
        End If
        シートの下端と右端を調べて範囲選択する
        DBシートに複写する
        Sheets("入出力").Select                 '次に開いたときに画面をちらつかせないため
        ActiveWorkbook.Save                     '上書き保存する
    Else
        Application.DisplayAlerts = False       '閉じる際に確認メッセージを出さない
        ActiveWorkbook.Close                    'ブックを閉じる
    End If
End Sub
'---------------------------------------------------------------------------------
Private Sub DBシートに複写する()
        Selection.Copy                          'どちらかのシートからコピー
    隠したDBシートをもどす
    Sheets("DB").Select
        Range("A2").PasteSpecial Paste:=xlValues '値を貼り付け
        Range("A1").Select
End Sub
'---------------------------------------------------------------------------------
Sub 隠したDBシートをもどす()                'Subとしたのはハンド操作でマクロの実行が可能に
    Sheets("DB").Visible = True
End Sub
'=================================================================================
  サンプルマクロ  単位選択入力      (C)1998.9.19   V1.0
'=================================================================================
<コメント>
ダウンロード すれば実際に動かして試せます。

Excel VBA Macro