ゆるゆると過ごす毎日

徒然に、、、いきましょう

VBAメモ

2013年01月18日 17時10分51秒 | Excel
コードが2行になる場合
Sub プロシージャ名()
    Range("A:1").Value _
       = 10
End Sub
変数の宣言
Dim 変数名
Dim 変数名, 変数名, 変数名
Dim 変数名 as データ型
データ型
データ型VBAでの表記値の範囲
文字列型 String 文字列
ブール型 Boolean True または False
バイト型 Byte 0から255の正の整数
整数型 Integer -32,768から32,767の整数
長整数型 Long -2,147,483,648から2,147,483,647の整数
単精度浮動小数点型 Single -3.402823E38から-1.401298E-45
1.401298E-45から3.402823E38
倍精度浮動小数点型 Double -1.79769313486231E308から-4.94065645841247E-324
4.94065645841247E-324から1.79769313486232E308
通貨型 Currency -922,337,203,685,477.5808から922,337,203,685,477.5807
日付型 Date 西暦100年1月1日から西暦9999年12月31日 (日付と時刻)
オブジェクト型 Object オブジェクト参照するデータ型
バリアント型 String あらゆる種類の値を保存できる型
ユーザー定義型 String ユーザー定義の型
日付型
日付の形をした文字列を指定するか、シャープ(#)で囲んだ形で日付を表す文字を指定する
Dim x As Date

x = "2006年8月23日"
x = #2006年8月23日#
x = #2006/8/23#
x = #8/23/2006#
x = #11:26:39 AM#
文字の連結
Dim a As String
Dim b As String
Dim c As String
Dim d As String

a = "こんにちは"
b = "お元気ですか"

c = a & b
d = a + b
「&」と「+」のどちらを使ってもいいが、「+」の方は数値と数値で使うと加算が実行されるので注意。
文字列と数値を連結したい時は+だとデータ型が違う加算はできないのでエラーが返される。

visual basic覚書

2012年12月05日 11時03分05秒 | Excel

数値に対する演算子
+ 加算
- 減算
* 乗算
/ 除算
^ 指数演算


文字列に対する演算子
+ 文字列の連結
& 文字列の連結


代入/比較演算子
= 代入
= 等しい
<> 等しくない
> 大きい
< 小さい
>= 以上
<= 以下


論理演算子
And 論理積
Or 論理和


Like演算子
Like 文字列の比較


<適用範囲> Sub <プロシージャ名>(引数, ...)
  ~ プロシージャの中身 ~
End Sub

<適用範囲> Function <プロシージャ名>(引数, ...) As <型>
  ~ プロシージャの中身 ~

  ' Function内の任意の場所に必要なだけ記述します
  <プロシージャ名> = <返したい値>
End Function


If 条件 Then 処理A Else 処理B

  または、

If 条件 Then
    処理A
Else
    処理B
End If

Select Case 数式
Case 条件A
    処理A
Case 条件B
    処理B
Case Else
    処理その他
End Select

ある条件が成立している間繰り返す場合(1)

  Do While 条件
      処理
  Loop

ある条件が成立している間繰り返す場合(2)

  Do
      処理
  Loop While 条件

ある回数繰り返す場合

  For 回数指定 To 上限 Step カウンタの幅
      処理
  Next

最初の二つの違いは、一番目の場合は条件によっては一度も処理を行わないことがあるのに対して、二番目の場合は必ず一度は処理を行う(始めから条件にあっていないとしても)ということです。Whileの代わりにUntilを使うと、ある条件が成立するまで(条件が成立しない間)繰り返すようにするできます。
回数指定の場合は、カウンタの幅が1ならばStep以降を省略できます。

例えば、このように記述します。

Do While nCount <= 10
    処理
Loop

Do
    処理
Loop Until nCount > 10

For nCount = 1 To 10 Step 2
    処理
Next