「トップページ/windows/microsoft office/EXCEL/VBA/WEB連携以外のつまづきやすいとこ」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
最終更新日時&date()
#html2(){{{{{{
<TABLE align="right">
<TR>
<TD>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4774119660" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</TD>
<TD>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4774120286" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</TD>
<TD>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4774120944" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</TD>
</TR>
<tr>
<td><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=477413340X" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4774134821" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=477413743X" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
</tr>
</TABLE>
}}}}}}
■目次
#contents_line()
初心者本を読み終わったあとには、msdn(マイクロソフト公式サイト)のこの特集を全部読むのが一番いいかも。
[[ Microsoft Office 2000/Visual Basic プログラマーズ ガイド >http://msdn.microsoft.com/ja-jp/library/cc376607(v=MSDN.10).aspx]]
「Office 2000」時代のページなので古いし、プログラマー向けの言い回しが多く理解しにくい。
でも、一番体系立てて書かれている気がする。
以下は、自分でまとめてみたわかりにくいプロパティ、メソッド、演算子などの説明。
*命令別の分類
>VBAの命令(コマンド)は大きく4つに分類できます。
>1. プロパティ
>2. メソッド
>3. ステートメント
>4. 関数
>引用元:[[Office TANAKA - Excel VBAステートメント >http://officetanaka.net/excel/vba/statement/index.htm]]
コメント:ステートメント一覧が上記にある。
**2.メソッド
[[SendKeys メソッド>http://homepage2.nifty.com/pasocon/nyumon/wshshell/sendkeys.html]]
**3.ステートメント
***3-0.ステートメントとは
ステートメントと呼ばれるのは、function,sub,for,exit,endなど。
ステートメントの定義をmsdnの中で探しまわりましたが見つからず。
msdnを調べる中で、わかったこととしては、
>すべてのステートメントは 2 つのカテゴリに分類されます。 引用元:[[ Visual Basic におけるステートメント >http://msdn.microsoft.com/ja-jp/library/ha6zwzx0(v=VS.80).aspx]]
>各ステートメントは、次のカテゴリのいずれかに属します。
>宣言ステートメント。宣言ステートメントは、変数、定数、またはプロシージャの名前を指定します。一緒にデータ型を指定することもできます。
>実行可能なステートメント。実行可能なステートメントは、アクションを実行します。メソッドまたは関数の呼び出しや、コード ブロックのループや分岐を行うことができます。値や式を変数や定数に代入する代入ステートメントも実行可能なステートメントに含まれます。
>引用元:[[ ステートメントの概要 >http://msdn.microsoft.com/ja-jp/library/865x40k4(v=VS.80).aspx]]
***3-1.宣言ステートメント
***3-1-1.プロシージャーの種類を決めるステートメント
プロシージャーには、Function、Sub、Event、Propertyの4種類がある。
参考:VBぷろぐらむ工房:文法書4 (リンク切れ)http://www001.upp.so-net.ne.jp/yoshihiro/gram4.htm
■function
[[Office TANAKA - Excel VBAステートメント Functionステートメント>http://officetanaka.net/excel/vba/statement/Function.htm]]
[[Functionの戻り値を配列にしたいのですが>http://okwave.jp/qa3511531.html]]
functionを使えば、自分で関数をつくれる。ユーザー定義関数と呼ばれる。
[[勉強用メモ - EXCEL/VBA/WEB連携以外のつまづきやすいとこ/自作関数 >http://www42.atwiki.jp/tomokazu0525/pages/95.html]]
■Property Set ,Get,Let
[[Property Set ステートメント >http://msdn.microsoft.com/ja-jp/library/cc392474.aspx]]
[[ Property Get ステートメント >http://msdn.microsoft.com/ja-jp/library/cc392457.aspx]]
[[Property Letについて - Visual Basic - 教えて!goo >http://oshiete.goo.ne.jp/qa/161765.html]]
***3-2.実行可能なステートメント
■for
(for文の途中で変数iからi+1に強制的に移りたい場合。)
if文でネストするのが一番マシの様子。
goto文でもできるが、構造が見にくくなる。
[[Excel質問掲示板(VBA) For Next 文で、途中から次のループに移りたいとき>http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi?mode=al2&namber=11871&rev=&no=0&P=R&KLOG=77]]
[[エクセルVBAでループ文について教えてください。 For i = 0 to 100 IF i = 10 t... - Yahoo!知恵袋 >http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q142871634]]
■exit,end
[[エラー処理_Endの使い方:VBA物語07 >http://www.accessclub.jp/vba/vba_007.htm]]
[[Excel VBA 入門講座 Exit >http://excelvba.pc-users.net/fol6/6_6.html]]
**修飾子
***ByVal と ByRef
[[ByVal と ByRef >http://homepage1.nifty.com/CavalierLab/lab/vb/byvalbyref.html]]
[[ByRef (Visual Basic) >http://msdn.microsoft.com/ja-jp/library/c84t73c2.aspx]] msdn
***Newキーワード
[[Newキーワードを用いてExcelファイルを新規に作成する方法 : VBAのTips解説 >http://www.accessclub.jp/vbakaisetu/52.html]]
**演算子
***like演算子(正規表現の簡易版)
記事名:[[比較演算子>http://www.geocities.jp/cbc_vbnet/kisuhen/enzanshi.html#hikaku]]
記事名:[[Like演算子を使った検索>http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_find.html#like]]
サイト名:よねさんのWordとExcelの小部屋
*目的別分類
**テキストファイルを扱う
(Outputとか、 Appendといった文字列の意味がわからなければここ。)
記事名:[[テキストファイルを操作する>http://officetanaka.net/excel/vba/file/file08.htm]]
サイト名:office tanaka
**印刷関連
[[ 印刷されるページの総数を調べる方法>http://support.microsoft.com/kb/408042/ja]]
**フィルタ
***[[オートフィルターが設定されているか判断する>http://www.k1simplify.com/vba/tipsleaf/leaf300.html]]
***[[オートフィルタで抽出された各行をマクロで選択>http://www.excel.studio-kazu.jp/kw/20080812102739.html]]
**クリップボード
実は、クリップボードと呼ばれるものは複数あります。
知っている限りでは、DataObject,microsoft officeのクリップボード機能、internet exploreを使うものの3つです。
***DataObject
>DataObjectオブジェクトはMSFormsのメンバです。使用するには、Microsoft Forms 2.0 Object Libraryを参照設定します。または、ブックにUserFormを挿入すると自動的に参照設定されます。 引用元:[[Office TANAKA - Excel VBA Tips クリップボードを操作する(1)>http://officetanaka.net/excel/vba/tips/tips20.htm]]
[[Excel VBA を学ぶなら moug モーグ | 即効テクニック | クリップボードとデータのやりとりをする >http://www.moug.net/tech/exvba/0150091.htm]]
[[Excel VBAでクリップボードに文字列をコピーする方法 | 太郎日記’79J >http://tarotaro.jugem.cc/?eid=1551]]
[[.xls: 変数のデータをクリップボードに格納する >http://xls.seesaa.net/article/17670181.html]]
***Office クリップボード
本来は、
>Office クリップボードは VBA による操作に対応していません。
ですが、下記のURLからダウンロードすれば、使用可能。
[[Office クリップボードを操作する方法 | YU-TANG's MS-Access Discovery >http://www.f3.dion.ne.jp/~element/msaccess/AcTipsOfficeClipBoard.html]]
***Internet Explorerをつかうもの
[[Office TANAKA - Excel VBA Tips クリップボードを操作する(2) >http://officetanaka.net/excel/vba/tips/tips81.htm]]
**自作のVBAに組み込みダイアログを表示させる
組み込みダイアログとは、エクセルにもとから入っているポップアップウインドウみたいなやつ)
***基礎
[[Excelの組み込みダイアログを表示する>http://officetanaka.net/excel/vba/tips/tips64.htm]]
[[組み込みダイアログボックス名称と呼出し番号の一覧>http://www.excel7.com/personal/vba_shiryou1.htm]]
***「ページ設定」のダイアログ
((xlDialogPageSetup)
[[「ページ設定」のダイアログの値の設定方法>http://www.sanynet.ne.jp/~awa/excelvba/stepup/0076.xls]] (注意!マクロつきエクセルファイル。無効推奨。)
***[関数の引数]ダイアログボックス
(xlDialogFunctionWizard)
[[関数名を指定して、関数の引数ダイアログボックスを表示させることができますか>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=6360;id=excel#6360]]
**その他
***ダブルクオーテーション(")を変数に挿入する
>「"」を代入する場合。
>例)strA = """"
>です。
>「ABC"DEF」を代入するときは、
>例)strA = "ABC""DEF"
引用元:[[雑記 ダブルクォーテーションを文字列変数に代入する場合のコーディング:ACCESSとVBAとシステム開発:So-netブログ >http://accessvba.blog.so-net.ne.jp/2010-12-16]]
***他のブックのマクロを使う
Run "'マクロブックのフルパス'!モジュール名.プロシージャ名"[, 引数1][, 引数2][, …]
以下でも動く。
Run ("'マクロブックのフルパス'!モジュール名.プロシージャ名"[, 引数1][, 引数2][, …] )
***ハイパーリンク
他のブックやシートを立ち上げたいときのハイパーリンク。
[[ Hyperlink.Follow メソッド (Microsoft.Office.Interop.Excel) >http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.excel.hyperlink.follow(office.11).aspx]]
Selection.Hyperlinks(1).Follow NewWindow:=True
ただ単に上記のように書くと、なぜか小さい画面になってしまった。
最大化して表示するために下記の一文を追加。
ActiveWindow.WindowState = xlMaximized
[[3.6 ワークブックを最大化、最小化 >http://www.happy2-island.com/excelsmile/smile03/capter00306.shtml]]
***入力規則
■セル参照なしで、改行のある入力規則を入力したい。
VBAをつかわないとできない。(たぶん。)
[[Excel質問掲示板(一般操作) 入力規則の改行>http://hpcgi1.nifty.com/kenzo30/a_cbbs/cbbs.cgi?mode=al2&namber=91214&no=0&P=R&KLOG=452]]
[[全ては時の中に… : 【Excel】VBAで入力規則を設定する >http://blog.livedoor.jp/akf0/archives/51212259.html#]]
[[VBA応用(Application.Quitの誤解) >http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_060.html]]
*変数やオブジェクトの型
**配列
記事名:[[動的配列の勉強>http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_050_11.html]]
サイト名:Excelでお仕事
記事名:[[Functionの戻り値を配列にしたいのですが>http://oshiete1.goo.ne.jp/qa3511531.html]]
記事名:[[引数が不定の場合-ParamArrayキーワード>http://www.moug.net/tech/exvba/0150074.htm]]
[[Excel VBA を学ぶなら moug モーグ | 即効テクニック | 静的配列の要素を最初期化/動的配列に割り当てたメモリを開放する(Eraseステートメント) >http://www.moug.net/tech/exvba/0100026.htm]]
[[Excel VBA を学ぶなら moug モーグ | 即効テクニック | Eraseステートメントで配列の初期化とメモリの解放をする >http://www.moug.net/tech/acvba/0050008.htm]]
[[Excel VBA を学ぶなら moug モーグ | 即効テクニック | 他のプロシージャに配列を引数として渡す >http://www.moug.net/tech/exvba/0150075.htm]]
[[Excel(エクセル)VBA入門:配列の並べ替え >http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_array2.html]]
***連想配列(Dictionaryオブジェクト)
[[No.17 VBAで連想配列 ~ Scripting.Dictionary >http://www.niji.or.jp/home/toru/notes/17.html]]
[[Office TANAKA - Excel VBA Tips 重複しないリストを作る >http://officetanaka.net/excel/vba/tips/tips80.htm]]
[[Excel(エクセル)VBA入門:重複なしのデータを抽出するいろいろな方法 >http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_jyufuku.html]]
[Dictionary オブジェクト >http://msdn.microsoft.com/ja-jp/library/cc428065.aspx]]
[[Dictionary オブジェクト | スクリプトの技法 | スクリプト センター >http://technet.microsoft.com/ja-jp/scriptcenter/ff621378.aspx]]
***多次元配列
VBでも60次元まで配列ができそうな様子。参考元:[[アクセスVBA講座_基礎編_変数・定数 >http://www.geocities.jp/cbc_vbnet/kisuhen/hensuu.html#g3]]
[[ VBAでの2次元配列の初期値定義 - 燈明日記 >http://d.hatena.ne.jp/chaichanPaPa/20081021/1224591921]]
多次元配列の要素数の調べ方[[Excel VBAメモ:UBound関数と多次元配列 | フィロの村note >http://note.phyllo.net/?eid=539332]]
**ユーザー定義型(構造体)
他の言語では、構造体と呼ばれるものだが、VBAでは「ユーザー定義型」と名づけている。
引数の多い関数を書きたい場合に便利。
特に、これまではoptionalを使っていたような引数、つまり存在が確実でない引数をとる関数を書く場合に便利。optionalは使える順番が決まってくるのに対し、ユーザー定義型なら任意の場所を空白にできる。
[[VBAを使うには/コーディングの工夫/広域変数より引数を/構造体の利用 >http://www.bekkoame.ne.jp/~poetlabo/COMP/Excel/VBALEC/arg.htm#2.1]]
[[構造体の目的と利用方法 >http://homepage1.nifty.com/CavalierLab/lab/vb/structure.html]]
*VBE
# イミディエイトウィンドウの使い方
記事名:[[複数行コマンドをイミディエイトウィンドウで実行>http://www.relief.jp/itnote/archives/001488.php]]
サイト名:インストラクターのネタ帳
#オブジェクトブラウザ
[[オブジェクトブラウザ>http://msdn.microsoft.com/ja-jp/library/aa203714(office.11).aspx#odc_wheretogofromhere]]
[[オブジェクトブラウザにメソッドの説明文を載せる>http://members3.jcom.home.ne.jp/daruma_kyo/info/proc_description.html#about_object_browser]]
*ユーザーフォーム
【基礎】
[[ユーザーフォームについて>http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_080.html]]
[[VBAでユーザーフォームに引数を渡したい>http://okwave.jp/qa2281625.html]]
#リストボックスやコンボボックスに表示する項目を設定する
[[RowSourceプロパティ>http://blog.livedoor.jp/katsuyausami/archives/50981829.html]]
【リストボックス】
[[複数列のリストボックスを作成する>http://www.officepro.jp/excelvbaform/form_list/index7.html]]
[[リストボックスでAddItem>http://okwave.jp/qa580254.html]]
*personalファイル
なぜか保管場所が二つある。
どうやら、一台のパソコンを複数アカウントで使う場合に、各アカウント間のpersonalファイルの共有する、共有しないを変えるためらしい。
**保管場所
PERSONAL(大文字)ファイル:おそらくデフォルトではこちらに保存される。他のアカウントをもつユーザーとpersonalファイルを共有しない。
C:\Documents and Settings\{ユーザー名}\Application Data\Microsoft\Excel\XLSTART
pesonal(小文字)ファイル:1台のパソコンに複数アカウントが入っており、かつ複数アカウントでpersonalファイルを共有したいとき。
C:\Program Files\Microsoft Office\OFFICE11\XLSTART
C:\Program Files\Microsoft Office\Office12\XLSTART
*外部コントロールを使う(参照設定を使う)
参照設定にチェックを入れると、VBAでできることが増える。
**[[「参照設定」を行う方法>http://www.accessclub.jp/samplefile/samplefile_83.htm]]
[[マクロで参照設定を操作する>http://officetanaka.net/excel/vba/tips/tips100.htm]]
サイト名:office tanaka
**正規表現
[[勉強用メモ - EXCEL/VBA/正規表現 >http://www42.atwiki.jp/tomokazu0525/pages/103.html]]
**USERFORM
***ListViewコントロール
[[ListViewコントロールの使い方>http://officetanaka.net/excel/vba/listview/index.htm]]
***TreeViewコントロール
[[ TreeViewコントロール >http://officetanaka.net/excel/vba/treeview/index.htm]]
*アドイン
**格納場所(EXCEL2003の場合)
C:\Documents and Settings\{ユーザー名}\Application Data\Microsoft\AddIns
C:\Program Files\Microsoft Office\OFFICE11\Library
**作り方
***基礎
[[ Excel アドイン関数の作り方 >http://addinmate.jp/HowTo/ExcelAddIn/Default.aspx]]
*ツールバーにボタンを作ってマクロを実行
[[ Excel/VBAクリニック,今月の診断(7)自作ツールバーでマクロ実行を容易にする処方 - Excel/VBAクリニック,...:ITpro >http://itpro.nikkeibp.co.jp/article/COLUMN/20060206/228645/]]
*Windows API を呼び出す
[[ Windows API とその他のダイナミック リンク ライブラリ >http://msdn.microsoft.com/ja-jp/library/cc344343(v=MSDN.10).aspx]]
このリンクを一通り読むこと。
*ページフッタ
**このページの1階層下のページ
#lsd()
**このページに含まれるタグ
&tags()
**このページへのアクセス数
今日:&counter(today)
昨日:&counter(yesterday)
これまで合計:&counter(total)
最終更新日時&date()
#html2(){{{{{{
<TABLE align="right">
<TR>
<TD>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4774119660" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</TD>
<TD>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4774120286" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</TD>
<TD>
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4774120944" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</TD>
</TR>
<tr>
<td><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=477413340X" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4774134821" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=477413743X" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
</tr>
</TABLE>
}}}}}}
■目次
#contents_line()
初心者本を読み終わったあとには、msdn(マイクロソフト公式サイト)のこの特集を全部読むのが一番いいかも。
[[ Microsoft Office 2000/Visual Basic プログラマーズ ガイド >http://msdn.microsoft.com/ja-jp/library/cc376607(v=MSDN.10).aspx]]
「Office 2000」時代のページなので古いし、プログラマー向けの言い回しが多く理解しにくい。
でも、一番体系立てて書かれている気がする。
以下は、自分でまとめてみたわかりにくいプロパティ、メソッド、演算子などの説明。
*命令別の分類
>VBAの命令(コマンド)は大きく4つに分類できます。
>1. プロパティ
>2. メソッド
>3. ステートメント
>4. 関数
>引用元:[[Office TANAKA - Excel VBAステートメント >http://officetanaka.net/excel/vba/statement/index.htm]]
コメント:ステートメント一覧が上記にある。
**2.メソッド
[[SendKeys メソッド>http://homepage2.nifty.com/pasocon/nyumon/wshshell/sendkeys.html]]
**3.ステートメント
***3-0.ステートメントとは
ステートメントと呼ばれるのは、function,sub,for,exit,endなど。
ステートメントの定義をmsdnの中で探しまわりましたが見つからず。
msdnを調べる中で、わかったこととしては、
>すべてのステートメントは 2 つのカテゴリに分類されます。 引用元:[[ Visual Basic におけるステートメント >http://msdn.microsoft.com/ja-jp/library/ha6zwzx0(v=VS.80).aspx]]
>各ステートメントは、次のカテゴリのいずれかに属します。
>宣言ステートメント。宣言ステートメントは、変数、定数、またはプロシージャの名前を指定します。一緒にデータ型を指定することもできます。
>実行可能なステートメント。実行可能なステートメントは、アクションを実行します。メソッドまたは関数の呼び出しや、コード ブロックのループや分岐を行うことができます。値や式を変数や定数に代入する代入ステートメントも実行可能なステートメントに含まれます。
>引用元:[[ ステートメントの概要 >http://msdn.microsoft.com/ja-jp/library/865x40k4(v=VS.80).aspx]]
***3-1.宣言ステートメント
***3-1-1.プロシージャーの種類を決めるステートメント
プロシージャーには、Function、Sub、Event、Propertyの4種類がある。
参考:VBぷろぐらむ工房:文法書4 (リンク切れ)http://www001.upp.so-net.ne.jp/yoshihiro/gram4.htm
■function
[[Office TANAKA - Excel VBAステートメント Functionステートメント>http://officetanaka.net/excel/vba/statement/Function.htm]]
[[Functionの戻り値を配列にしたいのですが>http://okwave.jp/qa3511531.html]]
functionを使えば、自分で関数をつくれる。ユーザー定義関数と呼ばれる。
[[勉強用メモ - EXCEL/VBA/WEB連携以外のつまづきやすいとこ/自作関数 >http://www42.atwiki.jp/tomokazu0525/pages/95.html]]
■Property Set ,Get,Let
[[Property Set ステートメント >http://msdn.microsoft.com/ja-jp/library/cc392474.aspx]]
[[ Property Get ステートメント >http://msdn.microsoft.com/ja-jp/library/cc392457.aspx]]
[[Property Letについて - Visual Basic - 教えて!goo >http://oshiete.goo.ne.jp/qa/161765.html]]
***3-2.実行可能なステートメント
■for
(for文の途中で変数iからi+1に強制的に移りたい場合。)
if文でネストするのが一番マシの様子。
goto文でもできるが、構造が見にくくなる。
[[Excel質問掲示板(VBA) For Next 文で、途中から次のループに移りたいとき>http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi?mode=al2&namber=11871&rev=&no=0&P=R&KLOG=77]]
[[エクセルVBAでループ文について教えてください。 For i = 0 to 100 IF i = 10 t... - Yahoo!知恵袋 >http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q142871634]]
■exit,end
[[エラー処理_Endの使い方:VBA物語07 >http://www.accessclub.jp/vba/vba_007.htm]]
[[Excel VBA 入門講座 Exit >http://excelvba.pc-users.net/fol6/6_6.html]]
**修飾子
***ByVal と ByRef
[[ByVal と ByRef >http://homepage1.nifty.com/CavalierLab/lab/vb/byvalbyref.html]]
[[ByRef (Visual Basic) >http://msdn.microsoft.com/ja-jp/library/c84t73c2.aspx]] msdn
***Newキーワード
[[Newキーワードを用いてExcelファイルを新規に作成する方法 : VBAのTips解説 >http://www.accessclub.jp/vbakaisetu/52.html]]
**演算子
***like演算子(正規表現の簡易版)
記事名:[[比較演算子>http://www.geocities.jp/cbc_vbnet/kisuhen/enzanshi.html#hikaku]]
記事名:[[Like演算子を使った検索>http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_find.html#like]]
サイト名:よねさんのWordとExcelの小部屋
*目的別分類
**テキストファイルを扱う
(Outputとか、 Appendといった文字列の意味がわからなければここ。)
記事名:[[テキストファイルを操作する>http://officetanaka.net/excel/vba/file/file08.htm]]
サイト名:office tanaka
**印刷関連
[[ 印刷されるページの総数を調べる方法>http://support.microsoft.com/kb/408042/ja]]
**フィルタ
***[[オートフィルターが設定されているか判断する>http://www.k1simplify.com/vba/tipsleaf/leaf300.html]]
***[[オートフィルタで抽出された各行をマクロで選択>http://www.excel.studio-kazu.jp/kw/20080812102739.html]]
**クリップボード
実は、クリップボードと呼ばれるものは複数あります。
知っている限りでは、DataObject,microsoft officeのクリップボード機能、internet exploreを使うものの3つです。
***DataObject
>DataObjectオブジェクトはMSFormsのメンバです。使用するには、Microsoft Forms 2.0 Object Libraryを参照設定します。または、ブックにUserFormを挿入すると自動的に参照設定されます。 引用元:[[Office TANAKA - Excel VBA Tips クリップボードを操作する(1)>http://officetanaka.net/excel/vba/tips/tips20.htm]]
[[Excel VBA を学ぶなら moug モーグ | 即効テクニック | クリップボードとデータのやりとりをする >http://www.moug.net/tech/exvba/0150091.htm]]
[[Excel VBAでクリップボードに文字列をコピーする方法 | 太郎日記’79J >http://tarotaro.jugem.cc/?eid=1551]]
[[.xls: 変数のデータをクリップボードに格納する >http://xls.seesaa.net/article/17670181.html]]
***Office クリップボード
本来は、
>Office クリップボードは VBA による操作に対応していません。
ですが、下記のURLからダウンロードすれば、使用可能。
[[Office クリップボードを操作する方法 | YU-TANG's MS-Access Discovery >http://www.f3.dion.ne.jp/~element/msaccess/AcTipsOfficeClipBoard.html]]
***Internet Explorerをつかうもの
[[Office TANAKA - Excel VBA Tips クリップボードを操作する(2) >http://officetanaka.net/excel/vba/tips/tips81.htm]]
**自作のVBAに組み込みダイアログを表示させる
組み込みダイアログとは、エクセルにもとから入っているポップアップウインドウみたいなやつ)
***基礎
[[Excelの組み込みダイアログを表示する>http://officetanaka.net/excel/vba/tips/tips64.htm]]
[[組み込みダイアログボックス名称と呼出し番号の一覧>http://www.excel7.com/personal/vba_shiryou1.htm]]
***「ページ設定」のダイアログ
((xlDialogPageSetup)
[[「ページ設定」のダイアログの値の設定方法>http://www.sanynet.ne.jp/~awa/excelvba/stepup/0076.xls]] (注意!マクロつきエクセルファイル。無効推奨。)
***[関数の引数]ダイアログボックス
(xlDialogFunctionWizard)
[[関数名を指定して、関数の引数ダイアログボックスを表示させることができますか>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=6360;id=excel#6360]]
**その他
***ダブルクオーテーション(")を変数に挿入する
>「"」を代入する場合。
>例)strA = """"
>です。
>「ABC"DEF」を代入するときは、
>例)strA = "ABC""DEF"
引用元:[[雑記 ダブルクォーテーションを文字列変数に代入する場合のコーディング:ACCESSとVBAとシステム開発:So-netブログ >http://accessvba.blog.so-net.ne.jp/2010-12-16]]
***他のブックのマクロを使う
Run "'マクロブックのフルパス'!モジュール名.プロシージャ名"[, 引数1][, 引数2][, …]
以下でも動く。
Run ("'マクロブックのフルパス'!モジュール名.プロシージャ名"[, 引数1][, 引数2][, …] )
***ハイパーリンク
他のブックやシートを立ち上げたいときのハイパーリンク。
[[ Hyperlink.Follow メソッド (Microsoft.Office.Interop.Excel) >http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.excel.hyperlink.follow(office.11).aspx]]
Selection.Hyperlinks(1).Follow NewWindow:=True
ただ単に上記のように書くと、なぜか小さい画面になってしまった。
最大化して表示するために下記の一文を追加。
ActiveWindow.WindowState = xlMaximized
[[3.6 ワークブックを最大化、最小化 >http://www.happy2-island.com/excelsmile/smile03/capter00306.shtml]]
***入力規則
■セル参照なしで、改行のある入力規則を入力したい。
VBAをつかわないとできない。(たぶん。)
[[Excel質問掲示板(一般操作) 入力規則の改行>http://hpcgi1.nifty.com/kenzo30/a_cbbs/cbbs.cgi?mode=al2&namber=91214&no=0&P=R&KLOG=452]]
[[全ては時の中に… : 【Excel】VBAで入力規則を設定する >http://blog.livedoor.jp/akf0/archives/51212259.html#]]
[[VBA応用(Application.Quitの誤解) >http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_060.html]]
*変数やオブジェクトの型
**配列
記事名:[[動的配列の勉強>http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_050_11.html]]
サイト名:Excelでお仕事
記事名:[[Functionの戻り値を配列にしたいのですが>http://oshiete1.goo.ne.jp/qa3511531.html]]
記事名:[[引数が不定の場合-ParamArrayキーワード>http://www.moug.net/tech/exvba/0150074.htm]]
[[Excel VBA を学ぶなら moug モーグ | 即効テクニック | 静的配列の要素を最初期化/動的配列に割り当てたメモリを開放する(Eraseステートメント) >http://www.moug.net/tech/exvba/0100026.htm]]
[[Excel VBA を学ぶなら moug モーグ | 即効テクニック | Eraseステートメントで配列の初期化とメモリの解放をする >http://www.moug.net/tech/acvba/0050008.htm]]
[[Excel VBA を学ぶなら moug モーグ | 即効テクニック | 他のプロシージャに配列を引数として渡す >http://www.moug.net/tech/exvba/0150075.htm]]
[[Excel(エクセル)VBA入門:配列の並べ替え >http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_array2.html]]
***連想配列(Dictionaryオブジェクト)
[[No.17 VBAで連想配列 ~ Scripting.Dictionary >http://www.niji.or.jp/home/toru/notes/17.html]]
[[Office TANAKA - Excel VBA Tips 重複しないリストを作る >http://officetanaka.net/excel/vba/tips/tips80.htm]]
[[Excel(エクセル)VBA入門:重複なしのデータを抽出するいろいろな方法 >http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_jyufuku.html]]
[Dictionary オブジェクト >http://msdn.microsoft.com/ja-jp/library/cc428065.aspx]]
[[Dictionary オブジェクト | スクリプトの技法 | スクリプト センター >http://technet.microsoft.com/ja-jp/scriptcenter/ff621378.aspx]]
***多次元配列
VBでも60次元まで配列ができそうな様子。参考元:[[アクセスVBA講座_基礎編_変数・定数 >http://www.geocities.jp/cbc_vbnet/kisuhen/hensuu.html#g3]]
[[ VBAでの2次元配列の初期値定義 - 燈明日記 >http://d.hatena.ne.jp/chaichanPaPa/20081021/1224591921]]
多次元配列の要素数の調べ方[[Excel VBAメモ:UBound関数と多次元配列 | フィロの村note >http://note.phyllo.net/?eid=539332]]
**ユーザー定義型(構造体)
他の言語では、構造体と呼ばれるものだが、VBAでは「ユーザー定義型」と名づけている。
引数の多い関数を書きたい場合に便利。
特に、これまではoptionalを使っていたような引数、つまり存在が確実でない引数をとる関数を書く場合に便利。optionalは使える順番が決まってくるのに対し、ユーザー定義型なら任意の場所を空白にできる。
[[VBAを使うには/コーディングの工夫/広域変数より引数を/構造体の利用 >http://www.bekkoame.ne.jp/~poetlabo/COMP/Excel/VBALEC/arg.htm#2.1]]
[[構造体の目的と利用方法 >http://homepage1.nifty.com/CavalierLab/lab/vb/structure.html]]
*VBE
# イミディエイトウィンドウの使い方
記事名:[[複数行コマンドをイミディエイトウィンドウで実行>http://www.relief.jp/itnote/archives/001488.php]]
サイト名:インストラクターのネタ帳
#オブジェクトブラウザ
[[オブジェクトブラウザ>http://msdn.microsoft.com/ja-jp/library/aa203714(office.11).aspx#odc_wheretogofromhere]]
[[オブジェクトブラウザにメソッドの説明文を載せる>http://members3.jcom.home.ne.jp/daruma_kyo/info/proc_description.html#about_object_browser]]
*ユーザーフォーム
【基礎】
[[ユーザーフォームについて>http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_080.html]]
[[VBAでユーザーフォームに引数を渡したい>http://okwave.jp/qa2281625.html]]
#リストボックスやコンボボックスに表示する項目を設定する
[[RowSourceプロパティ>http://blog.livedoor.jp/katsuyausami/archives/50981829.html]]
【リストボックス】
[[複数列のリストボックスを作成する>http://www.officepro.jp/excelvbaform/form_list/index7.html]]
[[リストボックスでAddItem>http://okwave.jp/qa580254.html]]
*personalファイル
なぜか保管場所が二つある。
どうやら、一台のパソコンを複数アカウントで使う場合に、各アカウント間のpersonalファイルの共有する、共有しないを変えるためらしい。
**保管場所
PERSONAL(大文字)ファイル:おそらくデフォルトではこちらに保存される。他のアカウントをもつユーザーとpersonalファイルを共有しない。
C:\Documents and Settings\{ユーザー名}\Application Data\Microsoft\Excel\XLSTART
pesonal(小文字)ファイル:1台のパソコンに複数アカウントが入っており、かつ複数アカウントでpersonalファイルを共有したいとき。
C:\Program Files\Microsoft Office\OFFICE11\XLSTART
C:\Program Files\Microsoft Office\Office12\XLSTART
*外部コントロールを使う(参照設定を使う)
参照設定にチェックを入れると、VBAでできることが増える。
**[[「参照設定」を行う方法>http://www.accessclub.jp/samplefile/samplefile_83.htm]]
[[マクロで参照設定を操作する>http://officetanaka.net/excel/vba/tips/tips100.htm]]
サイト名:office tanaka
**正規表現
[[勉強用メモ - EXCEL/VBA/正規表現 >http://www42.atwiki.jp/tomokazu0525/pages/103.html]]
**USERFORM
***ListViewコントロール
[[ListViewコントロールの使い方>http://officetanaka.net/excel/vba/listview/index.htm]]
***TreeViewコントロール
[[ TreeViewコントロール >http://officetanaka.net/excel/vba/treeview/index.htm]]
*アドイン
**格納場所(EXCEL2003の場合)
C:\Documents and Settings\{ユーザー名}\Application Data\Microsoft\AddIns
C:\Program Files\Microsoft Office\OFFICE11\Library
**作り方
***基礎
[[ Excel アドイン関数の作り方 >http://addinmate.jp/HowTo/ExcelAddIn/Default.aspx]]
*ツールバーにボタンを作ってマクロを実行
[[ Excel/VBAクリニック,今月の診断(7)自作ツールバーでマクロ実行を容易にする処方 - Excel/VBAクリニック,...:ITpro >http://itpro.nikkeibp.co.jp/article/COLUMN/20060206/228645/]]
*Windows API を呼び出す
[[ Windows API とその他のダイナミック リンク ライブラリ >http://msdn.microsoft.com/ja-jp/library/cc344343(v=MSDN.10).aspx]]
このリンクを一通り読むこと。
&link_edit(text=ここを編集)
*ページフッタ
**このページの1階層上のページ
&link_parent()
**このページの1階層下のページ
#lsd()
**このページに含まれるタグ
&tags()
**このページへのアクセス数
今日:&counter(today)
昨日:&counter(yesterday)
これまで合計:&counter(total)