VBAのかんたんなメモ書き
■リンク | |
Excel VBA 入門講座 | |
Excelでお仕事!「VBA応用」メニュー | |
VBA - アプリケーションとしてのVBA | |
Excel(エクセル)VBA入門:目次 | |
めも |
■変数 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
データ型 | Dim 端末 As String | Dim 変数名 As データ型 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
配列 | Dim 端末() As String | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■シート | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
シート追加する。 | Sheets.Add | 新規追加と同時にアクティブ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
シートコピー追加する。 | Call Worksheets("トップ").Copy(Before:=Sheets(1)) | 左側にコピーしたシートを追加 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
指定したシートを表示(アクティブ)する。 | Worksheets("トップ").Activate | 「トップ」というシートをアクティブ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
シートをコピーする。 | Worksheets("トップ").Range("C6:E9").Copy | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
シートを貼り付けをする。 | Worksheets("トップ (2)").Range("C6:E9").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
シート削除 | Sheets("トップ").Delete | 「トップ」というシートを削除 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■値の取得 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
セル内の文字数を取得する。 | Len("ABC") | ABCは3文字なので、「3」という値になります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
指定したシートの、最終列を取得する。 | Worksheets("トップ").UsedRange.Columns.Count | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
指定したシートの、最終行を取得する。 | Worksheets("トップ").UsedRange.Rows.Count | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■文字 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
大文字を小文字に変換する。 | LCase("ABCD") | 「ABCD」が「abcd」になります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
小文字を大文字に変換する。 | UCase("abcd") | 「abcd」が「ABCD」になります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■色の変更 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
文字の色を変える。 | Worksheets("トップ").Range("A1").Font.ColorIndex = 5 | 「Font.ColorIndex =5」と指定した場合、文字は青色になります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
セルの色を変える。 | Worksheets("トップ").Range("A1").Interior.ColorIndex = 5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■文字の検索 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
「ABCD」という文字があるY列を取得する。 | Worksheets("トップ").Cells.Find("ABCD").Row | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
「ABCD」という文字があるX列を取得する。 | Worksheets("トップ").Cells.Find("ABCD").Column | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■セル内の文字を取得する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(1)セル内の文字を取得する。 | Worksheets("トップ").Cells(1, 1) | 「トップ」シートのセルA1を取得されます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(2)セル内の文字を取得する。 | Worksheets("トップ").Range("A1") | 「トップ」シートのセルA1を取得されます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(1)セルを範囲して取得する。 | Worksheets("トップ").Range("A1:5C") | 「1A」から「5C」を取得されます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(2)セルを範囲して取得する。 | Range(Cells(1, 1), Cells(5, 3)).Select | 「1A」から「5C」を取得されます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(3)セルを範囲して取得する。 | Range(Cells(1, "A"), Cells(5, "C")).Select | 「1A」から「5C」を取得されます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
セル内文字を区切って取得する。 | mystr = Split(Worksheets("トップ").Cells(3, 1), " ") Worksheets("トップ").Cells(1, 1) = mystr(0) Worksheets("トップ").Cells(1, 2) = mystr(1) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■書式設定 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ユーザー定義 | Worksheets("トップ").Range("G:G").NumberFormatLocal = "yyyy/mm/dd hh:mm" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■フィルタ使用する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
値に一致 | Worksheets("結果").Range("E2").AutoFilter field:=5, Criteria1:="【運転】*" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
〜から始まる値 | Worksheets("結果").Range("E2").AutoFilter field:=5, Criteria1:="【運転】" | 末尾に*を付ける。例 「【運転】*」 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
昇順 | Worksheets("結果").Range("E2").Sort key1:=Worksheets("トップ").Range("L2"), order1:=xlAscending, Header:=xlYes | L列を昇順 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
オートフィルタを解除 | Worksheets("トップ").Range("E2").AutoFilter | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■保存 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
テキスト保存 | myText = ThisWorkbook.Path & "\config.txt" 'ファイル名を指定 If Dir(myText) <> "" Then 'ファイル名の重複確認 MsgBox "保存するファイル名が重複しています。": End Else io = FreeFile() Open myText For Append As io Print #io, Sheets("トップ").Range("A100") Close io End If |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■セルをクリック時の動作 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1回クリックすると「○」 2回クリックすると「×」 3回クリックすると空白 になる。 |
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True ' 動作させるセルのアドレス Const ADDR As String = "D8:F21,H8:J21,D25:F47,H25:J47" If Union(Target, Range(ADDR)).Address(0, 0) = ADDR Then Select Case Target Case "" 'クリックした右側セルに文字が存在しない場合動作しない(Target.Row=クリックした行、Target.Column=クリックした列) If Worksheets("トップ").Cells(Target.Row, Target.Column - 1) = "" Then Else Target.Value = "○" End If Case "○" Target.Value = "×" Case "×" Target.Value = "" End Select End If End Sub |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■その他 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
数字(秒)を時分秒(hh:mm:ss)に変換する。 | Dim h As Integer, m As Integer, s As Integer dd = Worksheets("Sheet1").Cells(3, 2) h = Int(dd / 3600) '時間 dd = dd - h * 3600 m = Int(dd / 60) '分 dd = dd - m * 60 s = Int(dd) '秒 dd = Int((dd - s) * 100) 'ミリ秒 SWTime = Format(h, "00:") & Format(m, "00:") & Format(s, "00.") Cells(4, 2).Value = SWTime |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
数字を半分にする。 | Range("A1") = Int(Range("A1") / 2) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||