スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

わかりやすいVBA(No4)

わかりやすいVBA(No4)今回もVBAを初心者にわかってもらえるように情報発信します。
今回は2つめの壁
その3繰り返しについてです。

エクセルの関数でSELECT文を使わないと多重分岐が難しいように繰り返しは関数でもできないしマクロの記録でもできません。
ここでVBAの価値がわかってきます。
エクセルをデータベースとして使うのがVBA実践塾のコンセプトですから
行の移動を繰り返しで考えてみます。
2行1列(A2)3行1列(A3)4行1列(A2)
の列に10を代入するプログラムを考えてみましょう。
sub dainyu()
cells(2,1)=10
cells(3,1)=10
cells(4,1)=10
end sub
これが100行1000行になった場合行数分プログラムを書かないといけません。
このような場合に変数と繰り返しを使います。
通常カウンターにはiという変数をよく使います。
2行から100行まで繰り返す場合
プログラムは以下のようになります。
sub dainyu1()
dim i as long
for i=2 to 100
cells(i,1)=10
next
end sub
cells(i,1)がポイントです。
iが1づつ加算されていきますのでcells(2,1)cells(3,1)cells(4,1)・・・・・
2行目から100行目まで合計し答えを101行目に代入するプログラムを考えてみます。
sub dainyu2()
dim i as long
dim kotae as long
for i=2 to 100
kotae=kotae+cells(i,1)
next
cells(i,1)¬=kotae
end sub

最終行まで計算する場合
100行の代わりに最終行を入れます。
最終行は部品集の
最終行の取得
lastrow = Worksheets("仕訳伝票").Cells(Rows.Count, 9).End(xlUp).Row
を使うと応用の幅が広がります。
くり返しこそエクセルをデータベースとして活用するVBA実践塾のコンセプトです。
次回からプログラムの説明に戻ります。
ご意見をお待ちしております。
ryoichi@asai.net
VBA実践塾
スポンサーサイト

わかりやすいVBA(No3)

わかりやすいVBA(No3)
今回もVBAを初心者にわかってもらえるように情報発信します。
今回は2つめの壁
その2条件文についてです。
エクセルで条件文を使っている人はIF文がどのようなものかわかっていると思います。
割り算をしたばあい分母が0であればエラーが表示されますのでエラーが表示されないようにします。
A1割るA2の場合A2が0であればエラーが表示されますので、条件文はA2=0
正ならば空白以外はA1/A2を表示します
=IF(A2=0,"",A1/A2)
実用的ではありませんがこれをVBAでプログラムしますと
Sub kotae()
If Cells(1, 2) = 0 Then
Cells(2, 2) = ""
Else
Cells(2, 2) = Cells(1, 1) / Cells(1, 2)
End If
End Sub
VBAの方が自由に行が使えますから慣れればわかりやすいと思います。
次はA5セルの値が20より大きいか小さいかを判断する式を考えましょう。
答えをA6に記入する場合エクセルだと数式IFを選択するとガイダンスが出てきますので自動で作成できます。
ifkansu.png


数式の欄に=IF(A5>=20,"大きい","小さい")と入力されます。
エクセルの場合答えを入れるセル数式を入力したセルA6がVBAのエディター部分に当たります。
ではB5に表示するプログラムを考えてみましょう。
Sub hikaku1()
If Cells(5, 1) >= 20 Then
Cells(5, 2) = "大きい"
Else
Cells(5, 2) = "小さい"
End If
End Sub
条件文のパターン
if 条件 then
正の場合の処理
else
偽の場合の処理
end if
文字型(文字)を代入する場合は“を前後につけること。
エクセルの場合は自動で“を付けてくれるため意識する必要がありません。
vbaには予約語があり表示という名前のプロシージャではエラーになります。
コマンド名なども変数名等に使えませんので注意してください。
エラーの確認メッセージがでますので安心です。
またこのような条件文はVBAを使うよりエクセルの計算式の方がはるかに楽です。
しかしここで基本をマスターすれば複雑な計算式等を作ることができます。
2つ以上の条件文はよく出てきます。
例えば0から10までは10以下11から20までは20以下それ以外は21以上と表示する条件文を考えてみましょう。
A6にエクセルの式を作ってみましょう。
=IF(A5<=10,"10以下です",IF(A5<=20,"20以下です","21以上です"))
これをB6に表示するVBAで書くと以下のようになります。
Sub hikaku()
Select Case Cells(5, 1)
Case Is <= 10
Cells(6, 2) = "10以下です"
Case Is <= 20
Cells(6, 2) = "20以下です"
Case Else
Cells(6, 2) = "21以上です"
End Select
End Sub
条件文<=10と入力するとIs <= 10と自動で変換されます。
SELECT文も部品集にのっていますので、覚える必要はありません。
VBA実践塾はプログラムはつくるのではなく部品を使うことだのコンセプトを理解してください。

またエクセルでできないことをするのがVBA実践塾です。エクセルでできることはエクセルにまかせましょう。
VBA実践塾

わかりやすいVBA(No2)

わかりやすいVBA(No2)今回もVBAを初心者にわかってもらえるように情報発信します。
今回は2つめの壁
その1変数についてです。
エクセルは変数の集まりですといってもピンと来ない方が多いと思います。
セルD3に1000 セルD4に2000セルD5に3000を入力してD6に合計の式
= D3+D4+D5を入力すると6000が計算されます。
セルD3の内容1000を4000に変更すると答えが9000に変わります。
セルD3の変数の中に1000が入ったり4000が入ったりします。
セルD3をVBA実践塾ではCELLS(3,4)で表します。3は行数4は列数です。
セルD4はCELLS(4,4)セルD5はCELLS(5,4) セルD6はCELLS(6,4)になります。
CELLS(3,4)に5000を代入するのは
CELLS(3,4)=5000となり
合計CELLS(6,4)= CELLS(3,4)+ CELLS(4,4)+CELLS(5,4)になります。
プログラムの書き方・実行の仕方がわからない方はわかりやすいVBA(No1)を
復習してください。
プロシージャ名マクロ名をkeisanにして書いてください
Sub keisan()
Cells(3, 4) =5000
Cells(6, 4) = Cells(3, 4) + Cells(4, 4) + Cells(5, 4)
End Sub
次はkotaeという変数を使って計算してみましょう。
わかりやすいVBA(No1)で説明したように、VBA実践塾では標準モジュールの先頭に
Option Explicitを表示する設定にしてあります。
この設定をしておくと必ず変数を宣言しないといけません。
Sub keisan()
dim kotae as long
kotae = Cells(3, 4) + Cells(4, 4) + Cells(5, 4)
msgbox kotae
End Sub
次は初心者が理解しにくいi=i+1です。
通常の数学ではおかしなことですが、左辺のiと右辺のiはiの中身が異なるという意味です。
Sub keisan()
Dim kotae As Long
kotae = 0
MsgBox kotae
kotae = kotae + Cells(3, 4)
MsgBox kotae
kotae = kotae + Cells(4, 4)
MsgBox kotae
kotae = kotae + Cells(5, 4)
MsgBox kotae
End Sub
このプロシージャを実行してみるとkotaeが加算されているのがわかります。
デバッグを使ってもkotaeの内容の変化がわかります。
その前にMsgBox kotaeの行に注釈(コメント)をつけておきましょう。
コメントの付け方はコメントブロックのアイコンをクリックします。
コメントブロックが表示されていない場合は表示→編集をクリックしてください。
コメント行は実行しませんので今後わかりやすいコメントをつけていってください。
wakariyasui2.png

デバッグはデバッグしたいこの場合はkotaeの内容を見たい時です、行を選択して
デバッグ→ブレイクポイントの設定をクリックするか行の左端をクリックしても茶色のマークが表示されデバッグモードになります。
解除は再度クリックすればもとに戻ります。
ではその状態で実行するとデバッグの印をつけたところでカーソルが止まっていますので
マウスをkotaeの上に移動するとkotae=0が表示されています。
1ステップ実行しますのでデバッグのステップインをクリックするかF8を押すとkotaeの内容がkotae=5000に変わっているのがわかります。
そのようにして変数の内容を確認しながらデバッグしていきます。
なぜエクセルのセル変数が使えるのに面倒な変数を使うのかという疑問がわいてくると思います。
VBA実践塾ではできるだけわかりやすいセル変数を使うべきだと思います。
エクセルが中心で出来ないところのみVBAを使うコンセプトです。
・変数に意味を持たせてプログラムをわかりやすくしたい
・繰り返し変数はセル変数では使えない
以上のような点が定義した変数をつかう点だと思います。
プログラムは理屈よりも慣れが大事です。
基本をしっかり学んで練習問題を繰り返し行いはやく実践に活かしてください。
そこでつまれば月3回のセミナーに参加されればヒントを提供いたします。
先日は愛知県からも大阪へこられました。何かの都合をつけて参加してください。

VBA実践塾

わかりやすいVBA(No1)

わかりやすいVBA(No1)
最近VBAがわかりにくい
私の教材がエクセルの初心者にとってわかりにくいという声をよく聞きますので今回はVBAをわかりやすく説明していきます。
エクセルと違いVBAは2つの壁を乗り越えないといけないと思います。

1つめの壁はVBAを使う環境とエクセルとの違い
2つめの壁はプログラムの基礎を理解すること

この2つが理解できていない人にVBAが難しいという声が多いのではないかと思います。

今回は1つめVBAを使う環境とエクセルとの違いを説明します。

エクセルの関数は数式バーで書きセルの中(答えを出力する)に保存されます。
セルの値が変わればすぐに結果がでます。
ところがVBAでは標準モジュールという別の場所に書きます。
hyoujyunn.png


そのためエクセルシートのように間違って関数を消してしまうことがありません。
通常エクセルを使っている場合には標準モジュールの画面はでません。
エクセルのファイルタブのオプションをクリックしリボンのユーザー設定を選択し
メインタブの開発にチェックが入っていませんのでチェックを入れます。
これでやっとVBAが使える環境になりました。
次は標準モジュールの出し方です。
開発タブ→VisualBasic→挿入→標準モジュールをクリックしてやっとプログラムが入力できる画面がそろいます。
それだけではまだプログラムを書いて実行できません。
(1)プログラムの書き方
(2)実行の仕方
をマスターしないと使えません。
そのまえにひとつ知っておいた方が良い知識を説明します。
2つめの壁プログラムの基礎を理解することに関連することですが
変数を使うには変数をあらかじめ定義しておいた方が今後プログラムの修正等で助かることが多いのでその意味と使い方をマスターします。
VBAは変数を定義しなくても使うことができます。
コンピュータの仕事に永年携わって感じることは知識を知らなくても結果がでることが多いです。またそのように技術の進歩によってできるだけ簡単に初心者でも使いやすいようにソフトは日々改良されています。
しかし基礎を知っていないとつまずくときがやってきます。
私自身60を過ぎて今Javaの勉強に取り組んでいますが、やはり若いときのコンピュータの基礎があるからできているのではないかと思っております。
わかりやすいVBA(No2)で変数の意味は詳しく説明する予定ですが
ツール→オプションの編集タブの中の変数の宣言を強制するにチェックをつけておくと
標準モジュールのプログラムの入力部分エディッターの先頭に
Option Explicitがいつも入力されるようになります。
この設定をしておいた方が面倒ですがプログラムの基本を忠実に守るために必要だと思います。
では(1)プログラムの書き方を説明していきます
TESTプログラム・プロシージャと呼んでいますが、
sub testと入力しエンターを押すと
Sub test()

End Sub
に自動的に変わります。その間にプログラムを書いていきます。
次は実行の方法ですがプログラムの定番こんにちはVBAを表示するプログラムを書いてみましょう
msgbox “こんにちはVBA”と入力すると
MsgBox "こんにちはVBA"このようにmとgが自動的に大文字になり半角のスペースが空きます。
プログラムはすべて半角で書きます。よくあるミスは全角の状態でスペースを入力してエラーになることがよくありますので注意してください。
又プログラムを見やすくすることと部品化をすすめるためにブロックは字下げする習慣をつけてください。
Sub test()
MsgBox "こんにちはVBA"
End Sub
次は実行の方法です。
パソコンをさわって気づくことだと思いますが、同じことをする場合方法がいろいろあるので初心者はどれが最適化わからず迷うことがあります。
基本がわかっておればすべて同じことだとわかりますのでできるだけ基本を学んでください。
基本操作はプルダウンだと考えましょう。
実行→Sub/ユーザーフォームの実行F5をクリックしましょう。
こんにちはVBAのダイアログ(Window)が表示された方もされない方もいます。
そこがパソコンの難しさであり面白味だと思います。
上手くいった方はたまたまカーソルがSub test()~End Subの間にあったからです。
上手くいかなかった人の方が勉強になります。
マクロのダイアログが出てきたでしょう。
実はtestという名前のマクロ(プログラム)ができてそれを選んで実行するのが基本です。
Windowsの基本は選択して実行です。
それがわかればエクセルシートから実行する方法を学びましょう。
エクセルの挿入→図形から好きな図形を選び図形のスタイルを選んでください。
選択して実行が基本ですから、その仕掛けは今選択している図形を右ボタンでクリックするとマクロの登録のメニューが出ています。
出ない人は少し移動して図形の中で再度右ボタンをクリックしてください。
昔ダブルクリックが出来なくてWindowsをあきらめた方もいました。
マクロの登録でtestを選んでOKをクリックすると図形(ボタン)をクリックするだけで
こんにちはVBAが表示されます。
スーッといった方は感動しませんが苦労してやっと初めてのプログラムができた人は感動します。その感動がプログラムの面白味であると思います。
三角のアイコンをクリックしたりF5を押しても実行できます。
次回は2つ目の壁プログラムの基礎を理解することの説明をしてきます。
VBA実践塾
プロフィール

浅井良一

Author:浅井良一
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。