2000/10/14

homehome

エクセルVBA覚え書き

kaccya
 エクセルVBAでよく使うマクロの覚え書きページです。思いつきで増やしていくつもりです。私が利用するために作ったページですが、よければコピー&ペーストしてご活用ください。
 ※便利なマクロがあれば教えてね。

■変数
○変数の宣言 (この場合は変数x)
Dim x As Integer  '整数型(-32,768〜32,767)
Dim x As Long    '長整数型(-2,147,483,648〜2,147,483,647)
Dim x As Byte    'バイト型(0〜255)

Dim x As Boolean  'ブール型(真True/偽False)
Dim x As String   '文字列型

Dim x As Single   '実数型
Dim x As Double   '長実数型

Dim x As Currency  '通貨型
Dim x As Date    '日付型

Dim x As Object   'オブジェクト型
Dim x As Variant  'バリアント型(全てのデータ)


■新規データ入力位置の取得
 選択した列データの最上行の空白セルにカーソルを移動するマクロです。(この場合はxシートのA列)
Sheets("x").Select           'xシートを選択します
Range("a65536").End(xlUp).Activate 'a列の最下行から上へ最初にデータの入っているセルをアクティブにします
ActiveCell.Offset(1, 0).Activate    '1行下の空白セルにカーソルを移動します


■メッセージボックスの表示
○シートxの印刷前にメッセージボックスを表示し、印刷前に確認をするマクロです。
Dim msg As Integer
msg = MsgBox("印刷を実行しますか?", vbOKCancel + vbDefaultButton1 + vbInformation, "印刷確認")
 If msg = 1 Then
  Sheets("x").Select
  ActiveWindow.SelectedSheets.PrintOut Copies:=1
 End If

○押されたボタンで処理を分岐する必要がなく、単にメッセージを表示する場合。
 改行はメッセージとメッセージの間に & Chr(13) & を打ちます。1行空けると見栄えが良いのでは・・・。
MsgBox "1行目のメッセージ" & Chr(13) & Chr(13) & _
"2行目のメッセージ" & Chr(13) & Chr(13) & _
"3行目のメッセージ" , , "タイトル"

※書式
戻り値 = MsgBox("メッセージ",ボタン種類 + デフォルトボタン設定 + マーク, "タイトル")
コード内容
(ボタン種類)
vbOKOnly0「OK」
vbOKCancel1「OK」「キャンセル」
vbAbortRetryIgnore2「中止」「再試行」「無視」
vbYesNoCancel3「はい」「いいえ」「キャンセル」
vbYesNo4「はい」「いいえ」
vbRetryCancel5「再試行」「キャンセル」
(デフォルトボタン設定)
vbDefaultButton10第1ボタン
vbDefaultButton2256第2ボタン
vbDefaultButton3512第3ボタン
vbDefaultButton4768第4ボタン
(マーク)
vbCritical16警告「×」
vbQuestion32問い合わせ「?」
vbExclamation48注意「!」
vbInformation64情報「i」
(戻り値)
vbOK1「OK」
vbCancel2「キャンセル」
vbAbort3「中止」
vbRetry4「再試行」
vbIgnore5「無視」
vbYes6「はい」
vbNo7「いいえ」
なんだかエクセルVBAのヘルプを作ってるような気が...。無駄なことをしているような...。(笑
それにしてもヘルプってどうしてあんなにわかりにくいのでしょうか?


■マクロ実行中の処理(画面更新)を隠すには
Application.ScreenUpdating = False
 画面表示を隠したい処理
Application.ScreenUpdating = True


■必要のないセルを隠す
○「PageUp」キー等を誤って押してしまい、変なセルにワープして、カーソルがどこに行ったのか訳が分からなくなることがありませんか?
 このマクロは不必要なセルを消す(幅や高さを0にする)ことで、カーソル移動を制限します。
 ※消すセルに式があっても大丈夫♪ ☆に消したい最左列名を、◎に消したい最上行番号を入力し実行します。
Sub MaskCell()
 Columns("☆:iv").ColumnWidth = 0
 Rows("◎:65536").RowHeight = 0
End Sub


■条件分岐処理1
○変数の内容や条件の結果により、処理を分岐する。よく使います。
A:
If 条件1 Then
 条件1成立の場合の処理
EndIf

B:
If 条件1 Then
 条件1成立の場合の処理
Else
 条件1不成立の場合の処理
EndIf

C:
If 条件1 Then
 条件1成立の場合の処理
ElseIf 条件2
 条件2成立の場合の処理
(ElseIfの繰り返し可能)
Else
 全ての条件不成立の場合の処理
EndIf


■条件分岐処理2
○1つの変数の内容や条件の結果により、複数の処理に分岐できるステートメントです。
Select Case 条件/変数
 Case a
  aの場合の処理
 Case b To c
  b〜cの場合の処理
 Case d,e
  dまたはeの場合の処理
 Case Is >=f Or 変数<g 
  f以上またはg未満の場合の処理
 Case Else
  上記以外の場合の処理
End Select


■繰り返し処理1
○条件を満たす間、又は満たすまで処理を繰り返すステートメントです。
A:条件が成り立っているとき処理する。最初から成り立たないときは処理しない。
Do While 条件式
 繰り返したい処理
Loop

B:条件が成り立つまで処理する。最初から成り立つときは処理しない。
Do Until 条件式
 繰り返したい処理
Loop

C:条件が成り立っているとき処理する。最低1回は処理する。
Do
 繰り返したい処理
Loop While 条件式

D:条件が成り立つまで処理する。最低1回は処理する。
Do
 繰り返したい処理
Loop Until 条件式


■繰り返し処理2
○繰り返しの回数を指定できる場合に使うループ処理。あんまり使ったことがない。
 変数に最初は開始値が代入され、1回の処理が終わるたびに増加数分が加えられ、終了値まで処理が繰り返されます。
For 変数 = 開始値 To 終了値 Step 増加数
 繰り返したい処理
Next 変数



【ご注意】マクロウィルスに注意しましょう!ファイルを開くときに警告が出たら要注意ですよ。
しかしマイクロソフ○もやってくれるぜ。対策は警告表示するしか無いのかな〜(T_T)

homehome