Top > 変数の勉強

VBA通信教材申込み

VBA課題解決型実践塾セミナー内容

申込 ヤフーショッピング

変数の勉強

変数の集まり

エクセルは変数の集まりです。
各セルA1・A2・A3・A4・A5・・・・・・・・・・
B1・B2・B3・B4・B5・・・・・・・・・・・・・
各セルの列番号・行番号が変数の名前です。
セル以外の変数を使ってプログラムを作るのがVBAです。
(1)セル変数を使う計算式
(2)セル変数を使って計算式を追加する
(3)数値型変数を使う例題
(4)文字型変数を使う例題

(1)セル変数を使う計算式

関数

VBA実践塾ではセル番号をCells(行,列)形式で表します。
その理由は行番号を変数を使ってデータベースとして使うからです。
大阪・名古屋・東京の1月の合計はエクセルの計算式では
=B2+B3+B4になります。
VBAでは
Sub keisan()
  Cells(5, 2) = Cells(2, 2) + Cells(3, 2) + Cells(4, 2)
End Sub
になり計算ボタンにリンクさせています。
大阪の数値を変えるとエクセルの計算式だと瞬時に答えが変わりますが、VBAでは毎回ボタンをクリックしないといけません。
VBAの場合はシートに計算式が入力されていませんので間違って式を消してしまうことはありません。

(2)セル変数を使って計算式を追加する

関数

エクセルで合計・消費税・税込金額を計算する式は
=B3+B4+B5
=B6*D1
=B6+B7
になります。
ではVBAではどのようになるでしょうか。
Sub keisan2()
  Cells(6, 2) = Cells(3, 2) + Cells(4, 2) + Cells(5, 2)
  Cells(7, 2) = Cells(6, 2) * Cells(1, 4)
  Cells(8, 2) = Cells(6, 2) + Cells(7, 2)
End Sub
消費税の入っているセルは8%に変わりますね。
Cells(1, 4)が消費税だとわかりにくいですね。
次の問題で分かりやすくしていきます。

(3)数値型変数を使う例題

関数

エクセルだと範囲を選択してオートサムのアイコンをクリックすれば計算式が一度に作られますね。
VBAならこのように簡単にはいきません。
まず消費税という変数を定義しておきましょう。
dim 消費税 as long
変数を定義しなくても通常はつかえます。
VBA実践塾ではあえてツール→オプション→編集→コードの設定→自動構文チェックにチェックをつけています。
コードの先頭にOption Explicitが常に表示しています。
これがあると変数は必ず定義しないとエラーになります。
プログラムを作っていくと変数を定義していた方がバグ(エラー)を修正しやすいのがわかってきます。
ではVBAのコードを紹介しておきます。
Sub keisan3()
  Dim 消費税 As Double
  Dim i As Long
  消費税 = Cells(1, 4)
'1月の計算
  Cells(6, 2) = Cells(3, 2) + Cells(4, 2) + Cells(5, 2)
  Cells(7, 2) = Cells(6, 2) * 消費税
  Cells(8, 2) = Cells(6, 2) + Cells(7, 2)
  i = 1
'2月の計算
  Cells(6, 2 + i) = Cells(3, 2 + i) + Cells(4, 2 + i) + Cells(5, 2 + i)
  Cells(7, 2 + i) = Cells(6, 2 + i) * 消費税
  Cells(8, 2 + i) = Cells(6, 2 + i) + Cells(7, 2 + i)
  i = i + 1
'3月の計算
  Cells(6, 2 + i) = Cells(3, 2 + i) + Cells(4, 2 + i) + Cells(5, 2 + i)
  Cells(7, 2 + i) = Cells(6, 2 + i) * 消費税
  Cells(8, 2 + i) = Cells(6, 2 + i) + Cells(7, 2 + i)
  i = i + 1
'合計の計算
  Cells(3, 2 + i) = Cells(3, 2 + i - 3) + Cells(3, 2 + i - 2) + Cells(3, 2 + i - 1)
  Cells(4, 2 + i) = Cells(4, 2 + i - 3) + Cells(4, 2 + i - 2) + Cells(4, 2 + i - 1)
  Cells(5, 2 + i) = Cells(5, 2 + i - 3) + Cells(5, 2 + i - 2) + Cells(5, 2 + i - 1)
  Cells(6, 2 + i) = Cells(6, 2 + i - 3) + Cells(6, 2 + i - 2) + Cells(6, 2 + i - 1)
  Cells(7, 2 + i) = Cells(7, 2 + i - 3) + Cells(7, 2 + i - 2) + Cells(7, 2 + i - 1)
  Cells(8, 2 + i) = Cells(8, 2 + i - 3) + Cells(8, 2 + i - 2) + Cells(8, 2 + i - 1)
  i = i + 1
'消費税の計算
  Cells(3, 2 + i) = Cells(3, 2 + i - 1) * 消費税
  Cells(4, 2 + i) = Cells(4, 2 + i - 1) * 消費税
  Cells(5, 2 + i) = Cells(5, 2 + i - 1) * 消費税
  Cells(6, 2 + i) = Cells(6, 2 + i - 1) * 消費税
  i = i + 1
'総合計の計算
  Cells(3, 2 + i) = Cells(3, 2 + i - 2) + Cells(3, 2 + i - 1)
  Cells(4, 2 + i) = Cells(4, 2 + i - 2) + Cells(4, 2 + i - 1)
  Cells(5, 2 + i) = Cells(5, 2 + i - 2) + Cells(5, 2 + i - 1)
  Cells(6, 2 + i) = Cells(6, 2 + i - 2) + Cells(6, 2 + i - 1)
End Sub
プログラムの先頭に‘がついているのは注釈(コメント)です。
コメントアイコンをクリックするとつきます。
コメントアイコンが表示されていない場合は表示→ツールバー→編集をクリック
すると出てきます。
変数の型はアベノ塾では普通long型とstring型を使いますが今回のように小数点の場合はdouble型を使います。
小数点を使う人は始めから数値はlong型よりdouble型を使った方が楽でしょう。
今回のポイントは消費税という変数にCells(1, 4)を格納するところです。
変数iを使わず直接座標値を指定した方がわかりやすいですがi = i + 1になれてもらうことと訓練のためにあえて使いました。

(4)文字型変数を使う例題

変数の範囲

文字型も数値型も変数の使い方は同じです。
今回は日付関数・時間関数の使い方も勉強しましょう。
文字列の連結は&でつなぎます。
メッセージボックス内での改行はvbCrLfを使います。
ではVBAのプログラムを参考にしてください。
Sub moji()
  Dim tuki As String
  Dim 日 As String
  Dim hi As Long
  tuki = Cells(4, 1)
  日 = Cells(5, 1)
  hi = Day(Date)
  Cells(1, 3) = Cells(1, 1) & Cells(2, 1) & Year(Date) & Cells(3, 1) & Month(Date) & tuki & hi & 日
  Cells(2, 3) = "時間は" & Hour(Time) & "時" & Minute(Time) & "分" & Second(Time) & "秒"
End Sub
Sub mojimsg()
  Dim tuki As String
  Dim jikan As String
  tuki = Cells(1, 1) & Cells(2, 1) & Year(Date) & Cells(3, 1) & Month(Date) & Cells(4, 1) & Day(Date) & Cells(5, 1)
  jikan = "時間は" & Hour(Time) & "時" & Minute(Time) & "分" & Second(Time) & "秒"
  MsgBox tuki & vbCrLf & jikan
End Sub

(5)親子で変数を使う場合変数のスコープ

 プロシージャの中のみで変数を使う場合

変数の範囲

Sub IFの下を実行しない()
  Dim yesno As Long
  yesno = MsgBox("実行する(Yes)・しない(No)", vbYesNo)
  If yesno = 6 Then
    MsgBox "IFの中実行"
  Else
    Exit Sub
  End If
  MsgBox "IFの外実行"
End Sub

 プロシージャの親子で変数を使う場合子のプログラムの変数を親でも使う場合

 モジュールの先頭に変数を定義する

関数

Option Explicit
Dim call内の判断 As Long
Sub callの判断でIFの下を実行しない()
  Call callの判断
  If call内の判断 = 6 Then
    MsgBox "IFの親の中実行"
  Else
    Exit Sub
  End If
  MsgBox "IFの親の外実行"
End Sub
Sub callの判断()
  call内の判断 = MsgBox("実行する(Yes)・しない(No)", vbYesNo)
  If call内の判断 = 6 Then
    MsgBox "IFの子の中実行"
  Else
    Exit Sub
  End If
    MsgBox "IFの子の外実行"
End Sub

(6)合計計算

1列の合計計算

For i = 2 To lastrow
  kei = kei + Cells(i, 2)
Next

複数列合計計算

合計計算

Dim 合計(10) As Long
For i = 3 To lastRow1
  For j = 0 To 10
    合計(j) = 合計(j) + Worksheets("レッサー売店").Cells(i, j + 4)
  Next
Next
For j = 0 To 10
  Worksheets("レッサー売店").Cells(i, j + 4) = 合計(j)
Next

塾長あいさつ
基本方針(考え方)
通信教育内容
課題解決セミナー内容
初心者基礎コース内容
カリキュラム・料金
案内地図・各種リンク
問合せ・申込み
アベノ塾
システムの内製化
アサイコンピュータACS
応用部品集(有料)
販売管理(事例)
財務管理(事例)
顧客管理(事例)
見積もり(事例)
給与(事例)
介護(事例)
ゴースト暗算(事例)
部品集(部品の基礎)
部品集(シート関連)
部品集(データベース)
部品集(セル関連)
部品集(関数)
部品集(フォーム関連)
部品集(ブック関連)
部品集(その他)
変数の勉強
繰り返しと条件文
マスター登録.訂正.削除
フォルダー内のファイル
項目をシート名で作成
ブックの操作
CSVファイルの取り込み
呼び出し元・先
商品マスター検索
エクセル関数をVBAで
エクセル関数を使う
よくつかうプログラム
販売管理(ソース)
財務管理(ソース)
給与管理(概要・画面)
見積もり(概要・画面)
工程管理(概要・画面)
原価管理(概要・画面)