Const fil1 As String = "c:\4月PKG.xls" '定数の例
Public Const dva As String = "b:" '共通定数
'
Dim aaa As Integer '整数型
Public xxx As Integer '整数型(共通の場合)
Dim bbb As Long '長整数型
Dim ccc As Single '単精度浮動小数点数型
Dim ddd As Double '倍精度浮動小数点数型
Dim eee As String '文字列型
Dim fff As Date '日付型
Dim ggg As Currency '通貨型
Dim hhh As Object '任意の型のオブジェクト
Dim iii As Variant 'バリアント型
Dim jjj 'バリアント型
Dim kkk As Boolean 'ブ−ル型(TrueかFalse)
Dim lll(50) As String '文字列型1次配列
Dim mmm(3.20) As String '文字列型2次配列
----- 下記の方法でも可(最近は余り使用しない)----------
Dim aaa% '整数型
Dim bbb& '長整数型
Dim ccc! '単精度浮動小数点数型
Dim ddd# '倍精度浮動小数点数型
Dim eee$ '文字列型
----- 1行に記述する場合 ----------
(正) Dim aaa As Integer,bbb AS Integer
(誤) Dim aaa,bbb AS Integer 'aaaはバリアント型となる
・上記はモジュール変数・定数の記述例で、そのモジュールの最初に入れる| 変数名 | ステートメント | 宣言する場所 | 記事 |
|---|---|---|---|
| ローカル変数 | なし Dim Static | 各 プロシージャー内 |
その値はそのプロシージャが実行さ れている間たけ保持(なし:暗黙宣言) Excelが起動されている間保持 |
| モジュール レベル変数 | Dim Private |
モジュール先頭の 宣言セクション |
モジュール内の全てのプロシージャ で使用できる。Privateも同じ機能だ が、ローカルのDimと区別したい時使用 |
| パブリック変数 | Public (Global) |
モジュール先頭の 宣言セクション |
すべてのブック・モジュール・プロ シージャで使用できる。 ただし、全てのブックで使用するには [ツール(O)] [参照設定(F)]で参照 するブックの指定が必要 |
| 変数名 | ステートメント | 宣言する場所 | 記事 |
|---|---|---|---|
| ローカル変数 | なし Const | 各 プロシージャー内 |
その値はそのプロシージャが実行さ れている間たけ保持(なし:暗黙宣言) |
| モジュール レベル変数 | Const Private |
モジュール先頭の 宣言セクション |
モジュール内の全てのプロシージャ で使用できる。 Privateも同じ機能だ どこでも使用できる。 |
| パブリック変数 | Public Const |
モジュール先頭の 宣言セクション |
すべてのブック・モジュール・プロ シージャで使用できる。 ただし、全てのブックで使用するには [ツール(O)] [参照設定(F)]で参照 するブックの指定が必要 |

| データ型の種類 | 表記 | データ範囲 | 記事 |
|---|---|---|---|
| ブール型 | Boolean | Trueまたは False | 2バイト |
| 整数型 | Integer | -32,768 〜 32,767 | 2バイト |
| 長整数型 | Long | -2,147,483,648 〜 2,147,483,647 | 4バイト |
| 単精度浮動 小数点型 | Single | -3.402823E38〜-1.401298E-45(負の値) 1.401298E-45〜3.402823E38(正の値) | 4バイト |
| 倍精度浮動 小数点型 | Double | -1.79769313486232E38〜 -4.94065645841247E-324(負の値) 4.94065645841247E-324〜 1.79769313486232E308(正の値) | 8バイト |
| 通貨型 | Currency | -922,337,203,685,477.4808〜 922,337,203,685,477.5807 | 8バイト |
| 日付型 | Date | 西暦100年1月1日〜西暦9999年12月31日 | 8バイト |
| オブジェクト型 | Object | . | 4バイト |
| 文字列型 | String | 0〜65,535バイト | 1or2バイト |
| バリアント型 | Variant | 数値 文字列 | 16バイト +アルファ |
| ユーザー定義型 | Type | . | . |
For i = 2 To cend
shu = Cells(i, 1)
If VarType(shu) <> 8 Then
Cells(i, 1).Select
Selection.NumberFormat = "@"
shu = "00" & shu
End If
lshu = LenB(shu)
If lshu <> 5 Then
Cells(i, 1) = Right(shu, 5)
End If
Next
・セルのフォマット形式を予め指定し入力した場合はその形式が入力される。Public Const filp As String = "11月PKG.XLS" Public Const filg As String = "11月架.XLS" Public Const filk As String = "11月欠品.XLS" Public Const filpa As String = "a:\進捗管理\11月PKG.XLS" Public Const filga As String = "a:\進捗管理\11月架.XLS" ' Sub ファイル名() ' 本マクロは、各プログラムで使用しているファイル名を ' そのVBAをそのつど変更するのは面倒なので ' ここに集めた。(月一回変更すること) End Sub・本例では定数のみを使用しているので、SUBにはメセ−ジ以外何も入れてない。
| 演算子の概要 | 演算子 | 内容 | 優先順位 |
| 算術演算子 |
^ | 数値のべき乗を求める | 高い ↓ ↓ 低い |
| − | 引き算 | ||
| * | 掛け算 | ||
| / | 割り算(浮動小数点) | ||
| \ | 割り算(整数)(余りはカット) | ||
| Mod | 割り算(余り)(整数部カット) | ||
| + | 足し算 | ||
| 関係演算子 |
= | 左辺と右辺は等しい | 高い ↓ ↓ 低い |
| <> | 左辺と右辺は等しくない | ||
| < | 右辺より左辺が小さい | ||
| > | 右辺より左辺が大きい | ||
| <= | 左辺より右辺が小さいか等しい | ||
| >= | 右辺より左辺が大きいか等しい | ||
| Like | 二つの文字の比較 | ||
| Is | 二つのオブジェクト変数の比較 | ||
| 文字連結演算子 |
& | 2つの文字列の連結 | |
| + | 2つの文字列の連結 | ||
| 論理演算子 |
Not | 式の論理可否を求める | |
| And | 2つの式の論理積を求める | ||
| Or | 2つの式の論理輪和を求める | ||
| Xor | 2つの式の排他的論理和 | ||
| Eqv | 2つの式の論理等価演算 | ||
| Imp | 2つの式の論理包含演算 |
Sub 例s48()
Cells(1, 2) = 3
Cells(2, 2) = 5
Cells(3, 2).Formula = "=SUM(B1:B2)"
d1 = Cells(2, 2)
d2 = Cells(2, 2).Formula
d3 = Cells(3, 2)
d4 = Cells(3, 2).Formula
End Sub
・上記の例で、変数d1とd2は同じ内容になる。しかし、変数d3は"8"が入っているのに
対し、d4は"=SUM(B1:B2)"が入っている。
moz = Cells(r, c).Formula
If Left(moz, 1) = "=" Then
ms1 = "セルに関数がありHTMLへ変換出来ません" & Chr$(10) _
& " (セルの場所 行=" & r & " 列=" & c & ")"
me2 = MsgBox(ms1, 16)
Exit Sub
End If
追記:セルに数式があるかチュックするプロパティがあった。上記のIf Cells(r, c).HasFormula Then追記の追記:上記はワ−クシ−ト関数をチェックした例であるが、その計算結果がエラ− になった場合も暴走した。(#N/A,#VALUE!,#REF!,#DIV/O! 等) 下記はセル内容にエラ−値があるか事前にチェックした例
If Application.IsError(Cells(r, c)) Then
ms1 = "行=" & r & " 列=2" & c & "にエラ−値"
me2 = MsgBox(ms1, 16)
Exit Sub
End If
ワ−クシ−ト関数の「IsError」はエラ−値の場合Trueを返すのでこれでチェックできる
なお、本例のようにワ−クシ−ト関数を使用する場合は、関数の前に「Application」を
付ければマクロ内でワ−クシ−ト関数を使用出来る。(If関数は使用不可)

Sub val()
For i = 2 To 20
dat1 = Cells(i, 2).Value
MsgBox dat1
Next
End Sub
Sub form()
For i = 2 To 20
dat2 = Cells(i, 2).Formula
MsgBox dat2
Next
End Sub
Sub txt()
For i = 2 To 20
dat3 = Cells(i, 2).Text
MsgBox dat3
Next
End Sub
セルに実際に表示されているデ−タの取得であれば、"###"になる欠点はあるが
Textプロパティがよい。
Option Base 1
Sub 例s410()
Dim w As Integer
Dim week As Variant
week = Array("日", "月", "火", "水", "木", "金", "土")
hia = InputBox("「年/月/日」を入力して下さい")
If IsDate(hia) Then
hi = CDate(hia)
hi = Format(hi, "yyyy""年""mm""月""dd""日""")
Else
MsgBox "「年/月/日」を入力して下さい"
Exit Sub
End If
w = Weekday(hi)
MsgBox hi & " は " & week(w) & "曜日です"
End Sub
上記例は、曜日取得は数字1〜7でありweek(1)からにしたケース。
'Forステートメントによる初期化(小さな配列ではよく使用する)
Sub s411a()
For i = 0 To 5
For j = 0 To 100
da(i, j) = ""
Next
Next
MsgBox "データチェック(" & da(1, 1) & ")"
End Sub
'動的配列を新たに宣言し初期化(要素数も変更できます)
Sub s411b()
ReDim da(5, 100) As String
MsgBox "データチェック(" & da(1, 1) & ")"
End Sub
'Eraseステートメントによる初期化(配列の初期化では一番便利)
Sub s411c()
Erase da
MsgBox "データチェック(" & da(1, 1) & ")"
End Sub
'Book1に記述のマクロ
Sub Macro1()
ddd = "abcd"
Call Application.Run("Book3.xls!Macro2", ddd)
End Sub
'Book3に記述のマクロ
Sub Macro2(ddd)
Windows("Book3.xls").Activate
Sheets("Sheet1").Select
Cells(2, 2) = ddd
End Sub