ラベル 基本文型 の投稿を表示しています。 すべての投稿を表示
ラベル 基本文型 の投稿を表示しています。 すべての投稿を表示

ループを抜ける: Exit

Exitは、自分のタイミングでループ(繰り返し)を抜けるときに記述します。
複数のforなどで囲まれている場合は、一番内側のループを抜けることになります。

Sub test()
  Dim i%, j%

  For i = 1 To 10
    Cells(i + 10, 2) = i
 
    If i = 5 Then                  'iが5だったらループを抜ける
      Exit For
    End If

  Next i
End Sub

子プロシージャの呼び出し

プログラムが大きくなると、一つのプロシージャの中に全てを書いていくと、後で振り返って直したり、プログラムを追加したり、ということが不可能なほど奇奇怪怪、煩雑なプログラムになってしまう危険性があります。そこで機能毎にプログラムを小分けすることで、振り返りやすくなります。

ここでは、プロシージャを呼ぶ方法を紹介します。"Call xxx"と記述することで、プロシージャxxxを呼び出すことができます。子プロシージャは同じモジュールに記述する必要は無いので、モジュール自身も上手にカテゴライズすると良いです。
' 親プロシージャ
Sub test()
  Call subtest    '別プロシージャの呼び出し
End Sub

'子プロシージャ(親から呼び出される側)
Sub subtest()
  Cells(2, 2) = 1
End Sub













変数の型

データの型の宣言。
私が良く使う変数は以下4つの変数です。他にも沢山変数があり、どれを使うかはしっかり考えるべきかもしれませんが、この4つは省略記号がついており、1行を短くするにはもってこいです。いろいろなホームページを見ると省略形を使わないように推奨しているところもありますが、実用上困っていないので、短い記述が好きな私は好んで%や#を使います。

No. 型名 型 省略記号
1   整数型 integer %
2   長整数型 long &
3   倍精度浮動小数点型double #
4   文字列型 string $











この他に良く使うモノとして、Variant型があります。これは、「何でもいいよ〜」という型です。

Sub test()
  Dim i as integer, j as integer        'ちゃんとした宣言
  Dim k%, l%                                 '省略した宣言。こちらの方が短い

  i = 3
  k = 4

  Cells(2,2) = i
  Cells(3,2) = k
End sub

プログラム実行の高速化: Application.ScreenUpdating

計算回数の多いプログラムを作ると、だんだんと実行速度が遅くなっていきます。
VBAはインタプリタで1行1行順次実行するという性質上これは避けられません。
その為少しでも高速化するために、記述を工夫する必要があります。
少し慣れたVBAのプログラマが必ずやるのは、画面の更新を一旦停止することです。
プログラムの最初に、
  Application.ScreenUpdating = False
という記述を行い、実行中画面の更新を停止します。このたった一行の追加で
プログラムは何倍も高速化しますから、書くのを癖にしてしまいましょう。

Sub test()
   Application.ScreenUpdating = False    '画面更新停止

   For i = 1 To 10          ' 1から10まで繰り返す
      Cells(i, 2) = i           ' i行2列に、iを入力する
   Next i

   Application.ScreenUpdating = True     '画面更新再開
End Sub

モジュールの実行

モジュールを実行するにはいくつかの方法があります。

1) リボンにあるボタンを押す
2) sub ●● 〜 end sub の間にカーソルを合わせた状態で、実行ボタンを押す、
 もしくはF5キーを押す
3) ボタンなどのユーザーフォームを作成し、マクロを登録する

ご自分の好みにあわせた方法で実行をしてみてください。

文字に下線を引く: Font.Underline

文字に斜線を引くには、.Underlineプロパティを指定します。
Sub test()
  Cells(2, 2).Font.Underline = xlUnderlineStyleSingle
End Sub






下線を消去するには、値をxlUnderlineStyleNoneにセットします。
Sub test()
  Cells(2, 2).Font.Underline = xlUnderlineStyleNone
End Sub






ビジネスプロフェッショナルのExcel術 (日経BPムック)

文字を斜体にする: Font.Italic

文字を斜体にするには、.Italicプロパティを指定します。
Sub test()
  Cells(2, 2).Font.Italic = True
End Sub






斜体の文字をノーマルに戻すには、値をFalseにします。
Sub test()
  Cells(2, 2).Font.Italic = False
End Sub

文字を太字にする: Font.Bold

文字を太字にするには、.Fontプロパティを指定します。
Sub test()
  Cells(2, 2).Font.Bold = True
End Sub






太字の文字をノーマルに戻すには、値をFalseにします。
Sub test()
  Cells(2, 2).Font.Bold = False
End Sub

文字に色を付ける: Font.Color

文字に色を付ける場合は、colorプロパティを使います。次の例では、cells(5,2) (B5セル) の文字を赤くします。

Sub test()
  Cells(5, 2).Font.Color = RGB(255, 0, 0)
End Sub






colorプロパティの他に、colorIndexを使っても良いです。入力は上と同じで、
  Cells(5, 2).Font.ColorIndex = 1
などと、色番号で指定します。色番号は、

色番号    色
-----------------
1            黒
2            白
3            赤
4            明るい緑
5            青
    ・・・・・

などですので、試してみて下さい。


ワークシートの指定

Excel VBAで困ることは、一度マクロを走らせると、消したくないセルにまちがって書き込もうが何をしようが、undoが効かないところです。そのため私は泣く泣く入力値を再度入力したり、といった失敗を何度も繰り返しています。これを回避するために、どのworksheetに書き込むかを明示することをお薦めします。
下のサンプルでは、まずworksheet型のwsという変数を定義しています。私は1行が長くなるのが嫌いなので、wsのように変数名をできるだけ短くするようにしています。これに書き込みたいシートをsetします。ここではsheet1を指定しています。書き込みは cells(i,j) = ・・・のように記入しますが、これを ws.cells とすることでどのワークシートのセルかを明示し、書き込む予定のなかったシートに書き込んでしまうことを防ぎます。

Sub test()
  Dim ws As Worksheet
  Set ws = Worksheets("sheet1")

  ws.Cells(2, 2) = 4

End Sub

if then ~ end if

if xxx then ~ end if は、xxxの部分に書いた条件を満たす場合に、~ に書かれた命令を実行する文です。ryotaroは、for ~ nextとこのif文で、基本的な文型はほとんど、と言ってもいいくらい多用します。

次のプログラムは、for ~ next で書いたプログラムを少し修正したものです。for ~ nextの時は1から10までセルに値を入力しましたが、ここでは、iが5になる時だけ出力するプログラムになっています。

Sub test()
  Dim a As Integer, i As Integer
 
  For i = 1 To 10          ' 1から10まで繰り返す
    If i = 5 Then
      Cells(i, 2) = i       ' i行2列に、iを入力する
    End If
  Next i

End Sub

繰り返し: for ~ next

繰り返しには、for ~ next ループを使います。
最初の行にいくつからいくつまで繰り返すかを、
 for i = 1 to 10
のように指定します。いくつ飛びに数値を増やす(減らす)かは、 stepを使って、
 for i = 1 to 10 step 2
のように指定することができます。


Sub test()
   Dim a As Integer, i As Integer
   
   For i = 1 To 10          ' 1から10まで繰り返す
      Cells(i, 2) = i           ' i行2列に、iを入力する
   Next i

End Sub



マクロの作成

VBAのマクロ作成方法は至極簡単です。

①VBAエディタを開く
 VBAエディタを開きます。リボンから選択してもいいですが、
 「Alt + F11」で開くので、一度覚えると簡単に開くことができます。

②モジュールを右クリックし、「標準モジュール」をクリックする
 プログラムを書くためのモジュールを用意します。
 ユーザーフォームを選択すると、コントロールするためのボタンを用意
 することができます。
  
③マクロの作成
 マクロは「sub ●●●」という記述から始まり、「End Sub」で終了します。
 これが一つのプログラムの単位となり、この中に中身を書いていきます。VBAではこの
 かたまりのことを「プロシージャ」と呼びます。
 sub ●●● と入力して改行すると、自動的にEnd Subが入力されます。