集計 |
Sub_Total = WorksheetFunction.Sum(Range(Cells(A, N), Cells(B, N))) 又は WorksheetFunction.Sum(Range("A1:A1000")) 又は Application.WorksheetFunction.Sum(Range("A1:A1000")) |
---|---|
Wait(一時停止) |
Application.Wait (Now() + "0:00:00.1") 指定時刻 = Now() + TimeValue("HH:MM:SS") '現在時刻より何分後 (例) 3分後なら 00:03:00 Application.Wait (指定時刻) 'この行でマクロ実行を指定時刻まで中断する |
Timer(現在時取得) |
Dim SinStart As Single Dim i As Single SinStart = Timer 処理A MsgBox "処理Aにかかった時間 : " & Timer - SinStart & "秒"Timerは午前0時からの経過秒数を単精度浮動小数点数型(Single)の値で返す |
アクティブブック、アクティブシートの退避 |
ABook = ActiveWorkbook.Name ASheet = ActiveSheet.Name |
アクティブブック、アクティブシートの復旧 |
Windows(ABook).Activate Sheets(ASheet).Select |
Excelのセルを使って初期設定を行う |
InputBook = Range("B1").Value InputPath = Range("B2").Value NeedPrint = Range("B7").Value |
---|---|
セルに数式をそのまま表示したい (計算はせずに説明用に使う) |
文字列として表示する方法 =SUM(A1:A5)と表示したい場合「'=SUM(A1:A5)」と頭に「'」(アポストロフィ)を付けて入力します。 計算式を確認したい場合や印刷したい場合、簡単に切り替える方法 ショートカットキー【Ctrl】+【Shift】+【@】 (解除も同じです) メニュー操作で行う方法 メニューバーの【ツール】→【オプション】を選択。 【表示】タブを選択。 『数式』をクリックしてチェックを入れます。 |
セル範囲の数式と値のクリア |
Range(Cells(DelStart, L), Cells(CurrentRow - 1, L)).Select Cells(CurrentRow - 1, L).Activate Application.CutCopyMode = False Selection.ClearContents |
セルの範囲指定で削除 |
Rows(K & ":" & K).Select Selection.Delete Shift:=xlUp |
特定セルの集計 |
Range("F1").Select ActiveCell.FormulaR1C1 = "=RC[-5]+RC[-3]+RC[-1]" [ ]内に変数を使う場合の注意 "=SUM(R[行top]C:R[-1]C)"ではエラー、正しくは "=SUM(R[" & 行top & "]C:R[-1]C)" |
セルの合計 |
Range("F9").Select ActiveCell.FormulaR1C1 = "=SUM(R[-8]C:R[-1]C)" |
セル値の集計 |
Worksheetfunction.Sum( Range("L2:L" & RowMax) ) |
集計計算式による集計 |
Cells(CurrentRow, L).Select ActiveCell.FormulaR1C1 = "=SUM(R[" & SigStart & "]C:R[-1]C)" |
式、(または値)の読み出し |
MsgBox Cells(1, I).Formula |
Excel操作による領域選択 |
[Shift]キーを押しながらアクティブセルを移動すると、移動した範囲が選択状態になる [Ctrl]キーを押しながら[End]キーを押すと、そのシートで使用されている範囲の右下に アクティブセルが移動する アクティブセルを現在使用しているセルの左上(セルA1)に置いた状態で、 [Ctrl]+[Shift]+[End]キーを押すと、現在使用しているセル範囲が自動的に選択される。 |
プログラミングによる領域選択 |
CurrentRegion任意のセルが含まれているひとかたまりのセル範囲([Ctrl]+[Shift]+[*]キーの結果と同じ) Range(任意のセル, ActiveCell.SpecialCells(xlLastCell))任意のセルから 最終セルまでの セル範囲 ActiveSheet.UsedRange Sheets("Sheet1").UsedRangeワークシートで使用されているセル範囲 |
切り捨て 四捨五入 切り上げ |
Num_countup = Application.RoundDown(実数, 0) Num_round = Round(実数, 0) Num_countdown = RoundUP (実数, 0) |
---|---|
ユーザ関数の作り方 |
Function 指定前日(本日 As Date) As Date 指定前日 = 本日 - 1 End Function -------------------------------------------- Sub 前日ファイル名() Dim 本日 As Date 本日 = Date 前日 = 指定前日(本日) MsgBox "本日=" & 本日 & vbCrLf & "前日=" & 前日 End Sub |
配列の初期化 |
Dim TBL(30, 5) As Variant Erase TBL |
1次元動的配列 |
Dim Data() As Variant N = 0 For I = 2 To MaxRow ReDim Preserve Data(N) As Variant Data(N) = Cells(I).Value N = N + 1 Next I |
2次元動的配列 |
Dim Data() As Variant N = 0 For I = 2 To MaxRow ReDim Preserve Data(19, N) As Variant For J = 0 To 19 Data(J, N) = Cells(I, J + 1).Value Next J N = N + 1 Next I |
Public Work() As Variant Sub UserForm2_Test() Dim N As Integer ReDim Preserve Work(9, 0) As Variant Work(0, 0) = "交付日付" xxxxxxxxxxx Work(9, 0) = "担当" N = 1 ReDim Preserve Work(9, N) As Variant Work(0, N) = "2012年4月21日" '日付 xxxxxxxxxxx Work(9, N) = "営業事務" '担当 UserForm2.Show vbModeless End Sub |
|
定数定義と有効範囲 |
Option Explicit ' プロシージャを超えて参照する変数/定数は動作するプロシージャの前(外)で宣言する。 Public X ' ←他モジュールからも参照可(変数) Private Y ' ←このモジュールからのみ参照可(変数) Public Const A = "AAA" ' ←他モジュールからも参照可(定数) Private Const B = "BBB" ' ←このモジュールからのみ参照可(定数) Sub TEST() ' プロシージャ固有の変数/定数はプロシージャ内で使用する手前で宣言する。 Dim Y ' ←値はプロシージャを抜けるとリセットされる、同一名は |
偶数番、奇数番で設定を変える |
Cells(4, 書出し列).Select Selection.NumberFormatLocal = "#,##0_ " If I Mod 2 = 1 Then Selection.NumberFormatLocal = "#,##0.0_ " End If |