システムトレード用の開発ツールです。エクセルのVBAを駆使して最高のパフォーマンスを目指します。基本は無料
VBA入門とかいっていますが、入門書をこのサイトに長々と作るつもりはありません。私がVBAを独学が習得する上で障害になった点を自分なり理解できた時に思ったことを書いただけです。参考書の補足みたいな説明みたいな感じですので、その点はよろしくお願いします。
エクセルには、あなたが行った一連の操作を記録して自動化出来る便利な機能があります。マクロです。マクロはVBAの入り口で、簡単な自動化ならプログラムの知識がなくてもエクセルが勝手に作ってくれます。
また、VBAの習い始めには、マクロ記録してからそれを編集し直し、さらに汎用性の高い物に作り変えられるという、素人プログラマーには大変ありがたい機能でもあります。説明が難解なMSのヘルプ以上にヘルプ機能の役割も担ってくれます。マクロ機能のマスターはものすごく簡単ですが、効果は絶大です。また次の段階のVBAやBASIC、JAVAなどの本格的なプログラムをマスターする近道でもあります。ぜひマスターしてください。よく疑問に思う、VBAとマクロの違いですが、明確にはありません。エクセルのマクロ機能を利用してコーディングされたものをマクロと呼び、人間がコーディングしたものをVBAと呼んでいるでけです。
最初にマクロを使用するためには、エクセルのセキュリティレベルを下げる必要があります。メニューバーの「ツール」→「マクロ」→「セキュリティ」と順にクリックします。セキュリティレベルのダイアログが表示されすので、中以下に設定してください。
次に、今後のためにも、「Visual Basic」というツールーバーを表示させます。メニューバーの「表示」から順に、「ツールバー」、「Visual Basic」をクリックします。
![]()
XPの場合
マクロ記録の準備は以上で終わりです。後はいつもの作業をする前に、録音と同じ要領でイメージ図の中の赤い●を押して、いくつかの作業を行い、終えたら●が■に変わってますので、それを押します。これでマクロの記録作業は終わりです。再生する場合はイメージ図の▲を押します。
説明だけだとイメージできないと思いますので、サンプルの作業手順を用意しました。
1から20までの連続した数字を振り、縦20行横6列に枠線を引きます。最後に外枠布太枠線を引きます。以上を自動化してみましょう。
最初の動作の前に赤い●を押すのを忘れないでください。またマクロ記録は誤動作を含むすべての動作を記録するので、記録時は余計な動作は出来るだけ避けます。

上記は完成図です。
ここまでの作業が出来たら、こんどはシート2を選択し、▲を押して、マクロを実行してください。一瞬で表が完成します。

次にマクロの記録内容を表示させます。一連の作業がどのように表示されたか確認してみます。▲を押して、マクロダイアログの「編集」をクリックしてください。VBAの編集画面が開きます。編集画面上のメイン右側に英語の呪文のような物がありますが、それがコードと呼ばれているものです。今回は個別の意味等の説明はしませんが、プログラム学習の初期段階ではマクロの自動化で作られたこのコードをより使い勝手の良いように編集し、より汎用性の高いものに仕上げて1つのプログラムを完成させます。
今回のマクロの自動記録のコードです。どうしてもうまくいかない場合はコピペして使用してください。
Sub Macro1() ' ' Macro1 Macro ' 'Range("A1").Select
ActiveCell.FormulaR1C1 = "1"Selection.AutoFill Destination:=Range("A1:A20"), Type:=xlFillSeries
Range("A1:F20").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub
英語が分かる人にはだいだい何を指しているか分かると思います。まずはパラメーターの数値を変えたりしてプログラムを変更してみてください。

投稿者 システムトレーダー壱式 : 2008年04月13日 22:32
このエントリーのトラックバックURL:
http://systemtrader.info/cgi/mt/mt-tb.cgi/16