初心者がプログラムの勉強をするために
Posted on 9 月 11, 2008, under 雑談.
初心者がプログラムを勉強するってことはかなり敷居を感じると思います。
でもやってみれば意外に簡単だったりして、楽しくなってくるもの。
この「楽しい」と感じる気持ちがプログラマーの第一歩と思います。
今まで何人かの素人にプログラムを教えてきました。
そこでわかったのはやっぱり実利があってこそ!
今やってる仕事が簡単に、ミスなくできるんだよ~って一度目の前でやってみせると自分でもやってみたくなるようです。
だけど初心者だからこそ、プログラムで何ができるのかわからないため結局手作業でやってしまう。
プログラムをやってみたいな~っと思ったら、まずプログラムで何ができるのかを知ってから。
それを実業務に少しづつ組み入れてみてください。
これまでのブログでなんとな~くVBAで何ができるのがわかると思います。
VBAではできないことはDOSやスクリプトなんかでできたりします。
そこはあきらめないで、実現したいことをどうやったら実現できるかネットで調べながら挑戦しましょう。
エクセルマクロの使用例3
図のコピーって知ってますか?
エクセルのセルを図として扱うことができます。
図としてあつかうとどうなるかというとオートシェイプのコネクタが図に張り付きます。
どうゆうことかというと・・

こ~んなことができたりしちゃいます。
これは図のコピーってのはエクセルの基本機能であるんですが、これをマクロで行ごとに図のコピーを行えるようにしました!
ソースアップしようかな?と思ったんですがちょっとソースに自信がないので・・また今度^^;
エクセルマクロの使用例2
エクセルのセルを結合するときに、列だけ結合して行は結合したくない!ってときないですか?
たとえばA1からE10のセルを選択したときに、横のセルならびだけ結合して、列は結合したくない!
そんな機能エクセルにはないんですよね。
普通にA1からE10を結合すると一個のセルになってしまいます。
エクセルでリストとか作ってるときどうしてやりたいですよね。
そこで作っちゃいました。選択したセル内で列だけ結合してくれるマクロ。
ソースはこんな感じです。
———————————————
Dim startCellC As Integer
Dim startCellR As Integer
Dim endCellR As Integer
Dim endCellC As Integer
Dim intCnt As Integer
startCellC = ActiveCell.Column
endCellC = Selection.Columns.Count + Selection.Column - 1
startCellR = ActiveCell.Row
endCellR = Selection.Rows.Count + Selection.Row - 1
For intCnt = startCellR To endCellR
Range(Cells(intCnt, startCellC), Cells(intCnt, endCellC)).Merge
With Range(Cells(intCnt, startCellC), Cells(intCnt, endCellC))
.HorizontalAlignment = xlLeft ‘左ぞろえ
.VerticalAlignment = xlTop ‘文字位置-中央
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = True
End With
Next
——————————————-
動作保障はできませんが、興味があればあなたのマクロに追加してやってください。
エクセルマクロの使用例1
客先に提出するドキュメント文書をエクセルで作ってるってとこありませんか?
私の会社はまさにこれでした。
レイアウトは会社さまざまだと思うのですが我が社では
ページのヘッダーに「プロジェクト名」「ドキュメント名」「ドキュメント管理NO」「備考」
フッターに「ドキュメント作成日」「社名」「作成者名」「プロジェクト管理者名」「ページ数」「総ページ数」
と必ずつけていました。
これを外注さんにエクセルレイアウトを渡して作成してもらうわけですが、
な・ぜ・か 勝手に変更してくるんですよね。
フォントサイズが違うとか、ページ数が間違ってるとか、1ページ内の行数が変わってるとか・・・
個人的にはこういうのは気に入りません。
かといって外注さんに修正させると修正になってなかったり細かいことにチクチク言ってる小さい人間と評価されます。
これにイラーーーーーっつときて作っちゃいました。
我が社のドキュメントレイアウト作成マクロ。
これで外注さんが作ってきたドキュメント上でマクロを実行してバシバシなおしましたよ。
一度作ってしまえばあとは楽チンですからね。
マクロにはこんな使い方もあります^^
PERSONAL.xlsの説明サイト
インストラクターのネタ帳
パーソナルエクセルとは何ぞや?という説明があります。
personal.xls 強化講座
パーソナルエクセルの設定方法。
そのほか便利なマクロ集があります。
私はかなりこのサイトのマクロにお世話になっています。
特に「全シートをHOMEポジションに」というのが便利!
複数シートの重~いファイルを作ったことありません?またシートが下にやけに長~いファイル。
ページごとにカーソルが変な位置にあって、一ページ目を見ているつもりが途中ページだったりした!とか。
また客先に提出するときにカーソルの位置調整とかしないといけないですよね。
そんなときにこのマクロが超便利です!
PERSONAL.xls パーソナルエクセルって知ってる?
パーソナルエクセルって知ってますか?
これは超便利な機能です。
私はエクセルのマクロ集を作ったんですが、よく使う機能ばかりを集めたのでいちいちマクロ実行ボタン押すのめんどくさいな~って思ってたんですね。
そこで調べていきついたのがPERSONAL.xls。。
何をど~するいかっていうと、エクセルを開いたときに、メニューバーに自分の作ったマクロをボタンとして追加しちゃう!というものです。
これのおかげでいちいちマクロ用のエクセルを開かなくてもよくなりました。
具体的な設定方法はかなり面倒。ちなみにvistaや2007では動かない感じ・・これがちょっと悲しいです。
誰か情報持ってたら教えてください(*_*)
ここまでのまとめ
どうでしょう?ここまででプログラムって何?ってことが少しわかったかと思います。
今まで勉強したEXCELのVBAですが、ACCESSにもVBAがありますし、VBAがわかればVBがわかる!
といっても問題ないと思います。
VBAがわかればVBスクリプトもわかりますし、VBがわかればjavaを勉強するときにも楽になります。
VBとjavaの違いって、文法が違ったり、単語が違ったりするだけ。
英語かフランス語かってな感じです。DOSも同じ。
インターネットにつながっていれば単語を覚えずにネットで調べればOKだから英語を勉強するほど本気になる必要もありません。
自分にあった説明サイトを見つけておけば、あとは独学でなんとかなります☆
VBAについて学べるサイト
Excel VBA 入門講座
上のサイトでは私より詳しく説明してくれています。
より複雑なマクロを作る場合はかかせない情報です。
エクセル VBA マクロ集
便利なマクロが無料で公開されています。
自分がやりたいことがこのサイトにあったなら、あとは自分のエクセルのマクロに追加するだけ!
「EXCEL」「マクロ」「初心者」「VBA」などのキーワードで検索すると自分にあったHPが見つかると思います。
マクロのプログラムソースを加工する
マクロのプログラムソースを加工してみましょう。
「Sub Macro1」~「End Sub」までを以下の内容で塗り替えてみてください。
——————————————————
Sub Macro1()
Range(”A1″).Select
ActiveCell.FormulaR1C1 = Date
Range(”A1″).Select
End Sub
——————————————————-
保存したら、前回までと同じ要領で「Macro1」を実行してみてください。
どうですか?
A1のセルに必ず今日の日付がセットされ、A1のセルにカーソルが戻ってきませんか?
これはカーソルがどこにあろうと同じ動きをするはずです。
これであなたはひとつのプログラムを作ったことになります。
マクロは複雑なことはできませんが、プログラムソースを自分で書くことでより複雑な動きを実現することができます。
あとは自分が何をやりたいか。
これを明確にすればPCでいろんなことができます。
マクロのプログラムソースを覗いてみる
前回までに保存したエクセルファイルを開いてください。

メニューバーより「ツール」→「マクロ」→「マクロ」をクリックしてください。

「編集」ボタンをクリック。

上記のようなウィンドウが表示されましたか?
右の枠内がプログラムソースになります。
緑色になっているところは「コメント」といってプログラムにはまったく関係ありません。
なので削除しても大丈夫。
ではコメント以外のところから説明していきます。
一行目「Sub Macro1()」最終行「End Sub」
これはマクロ名「Macro1」を実行するときにこの範囲内を実行します。
二行目「ActiveCell.FormulaR1C1 = “08/09/2008″」
これは「アクティブなセル(カーソルがあるセル)に2008/08/09という文字列をセットする」という命令です。
三行目「Range(”A2″).Select」
これは「A2のセル(2行目の一番左のセル)を選択する」という命令です。