VBAは、: (コロン)で区切り、1行に複数の式が書ける。
cf.
http://oshiete.goo.ne.jp/qa/4821878.html
Showing posts with label excel. Show all posts
Showing posts with label excel. Show all posts
Wednesday, December 30, 2015
Excel VBA: On Error ...
On Error
On Error GoTo line では、エラーが発生するとlineで指定した行ラベルまたは行番号に処理が移ります。
On Error Resume Next では、エラーが発生するとエラーの発生した次の行から処理を続行します。
On Error Goto 0 は、エラー処理ルーチンを無効にします。
cf.
http://officetanaka.net/excel/vba/statement/OnError.htm
On Error Resume Next では、エラーが発生するとエラーの発生した次の行から処理を続行します。
On Error Goto 0 は、エラー処理ルーチンを無効にします。
cf.
http://officetanaka.net/excel/vba/statement/OnError.htm
Excel 文字列 結合 ダブルクォーテーション
Excel の関数やVBAで、文字列を結合する際には、& で結合する。
例えば、
A1 = "晴天"
B1 = "本日は" & A1 & "なり。"
結果: 本日は晴天なり。
ここで、ダブルクォーテーション " を表示するには、
① Char(34) を使う
② " を 3つ繋げる
という方法がある。ただし、②は値の引用ができない。
例えば、
①
A1 = "晴天"
B2 = "本日は" & Char(34) & A1 & Char(34) & "なり。"
結果: 本日は"晴天"なり。
②
A1 = "晴天"
B3 = "本日は" & """ & A1 & """ & "なり。"
結果: 本日は" & A1 & "なり。
cf:
http://www.relief.jp/itnote/archives/003415.php
例えば、
A1 = "晴天"
B1 = "本日は" & A1 & "なり。"
結果: 本日は晴天なり。
ここで、ダブルクォーテーション " を表示するには、
① Char(34) を使う
② " を 3つ繋げる
という方法がある。ただし、②は値の引用ができない。
例えば、
①
A1 = "晴天"
B2 = "本日は" & Char(34) & A1 & Char(34) & "なり。"
結果: 本日は"晴天"なり。
②
A1 = "晴天"
B3 = "本日は" & """ & A1 & """ & "なり。"
結果: 本日は" & A1 & "なり。
cf:
http://www.relief.jp/itnote/archives/003415.php
Monday, December 23, 2013
VBA 変数の有効範囲と有効期間
①プロシージャレベル
Sub .... End Subまでの範囲。
プロシージャレベル変数の宣言には、Subプロシージャ内でDimまたはStaticを使用する。
DimとStaticの違いは有効期間である。
Subプロシージャ内でDim宣言した場合は、Subプロシージャの実行が終了すると値が失われる。
Static宣言した場合は、Subプロシージャの終了後も保持される。
ただし、参照範囲がSubプロシージャ内に限られているので、他のSubプロシージャから参照することはできない。
Staticは、同じプロシージャを繰り返し呼び出す必要がある場合に、Subプロシージャ内の値を保持したまま呼び出したい時に使う。
②モジュールレベル
モジュール内での宣言、使用。(ユーザフォーム、標準モジュール、クラスモジュール)
モジュールレベル変数の宣言には、Privateステートメントを使用するか、またはモジュール内(Subプロシージャの外)でDimを使用する。
いずれも参照範囲および有効期間は同じ。
各モジュール内では、どのプロシージャからでも参照可能。
モジュール変数は、Subプロシージャが終了しても変数が再定義するまで値が保持される。例えば、ユーザフォームを表示している間は値が保持される。
③プロジェクトレベル
プロジェクトの全体。
変数の宣言には、Publicステートメントを使用する。標準モジュール内で宣言する。
有効期間は、モジュールレベル変数と同じ。
ユーザフォーム内で宣言したプロジェクトレベル変数は、標準モジュール内では参照できない。
Source: Excel VBA コーディング・テクニック 間 顕次 p.167
Sub .... End Subまでの範囲。
プロシージャレベル変数の宣言には、Subプロシージャ内でDimまたはStaticを使用する。
DimとStaticの違いは有効期間である。
Subプロシージャ内でDim宣言した場合は、Subプロシージャの実行が終了すると値が失われる。
Static宣言した場合は、Subプロシージャの終了後も保持される。
ただし、参照範囲がSubプロシージャ内に限られているので、他のSubプロシージャから参照することはできない。
Staticは、同じプロシージャを繰り返し呼び出す必要がある場合に、Subプロシージャ内の値を保持したまま呼び出したい時に使う。
②モジュールレベル
モジュール内での宣言、使用。(ユーザフォーム、標準モジュール、クラスモジュール)
モジュールレベル変数の宣言には、Privateステートメントを使用するか、またはモジュール内(Subプロシージャの外)でDimを使用する。
いずれも参照範囲および有効期間は同じ。
各モジュール内では、どのプロシージャからでも参照可能。
モジュール変数は、Subプロシージャが終了しても変数が再定義するまで値が保持される。例えば、ユーザフォームを表示している間は値が保持される。
③プロジェクトレベル
プロジェクトの全体。
変数の宣言には、Publicステートメントを使用する。標準モジュール内で宣言する。
有効期間は、モジュールレベル変数と同じ。
ユーザフォーム内で宣言したプロジェクトレベル変数は、標準モジュール内では参照できない。
Source: Excel VBA コーディング・テクニック 間 顕次 p.167
Sunday, December 22, 2013
Excel VBAコードを見られないようにする
コードを見られたくない場合には、
VB Editorの
ツール → VBA Projectのプロパティ
→ 保護タブ → プロジェクトを非表示用にロックするにチェック
ここでパスワードを指定する。
VB Editorの
ツール → VBA Projectのプロパティ
→ 保護タブ → プロジェクトを非表示用にロックするにチェック
ここでパスワードを指定する。
Tuesday, March 20, 2012
sumif の否定条件 「~でないセルの合計」(Excel)
例えば、以下のようにする。
=SUMIF(K3:K14,"<>"&"完了",B3:B14)
→K3:K14のセルで"完了"でないB3:B14のセルを合計する。
=SUMIF(K3:K14,"<>"&"完了",B3:B14)
→K3:K14のセルで"完了"でないB3:B14のセルを合計する。
Thursday, January 5, 2012
他シートにあるリストから選択候補 (Excel)
他シートにあるリストで入力規則を設定する場合、名前を付けるとよい。
ただし、その文字が含まれる特定のセルの色を変えるときに指定する条件付書式設定では、他シートはしていできない。
ただし、その文字が含まれる特定のセルの色を変えるときに指定する条件付書式設定では、他シートはしていできない。
Wednesday, January 4, 2012
Wednesday, December 7, 2011
Excel 全角半角を一括変換
http://pc.nikkeibp.co.jp/article/NPC/20060214/229244/
全角文字→半角文字には ASC()
カタカナも半角カタカナに変換される
半角にできない平仮名や漢字は無視される
半角文字→全角文字には JIS()
全角文字→半角文字には ASC()
カタカナも半角カタカナに変換される
半角にできない平仮名や漢字は無視される
半角文字→全角文字には JIS()
Excel列表示を ABC→123形式で表示
Excelの列番号(見出し)が数字で表示されるのはナゼ?
http://trendy.nikkeibp.co.jp/article/qa/other/20020819/101538/?rt=nocnt
R1C1参照形式をA1参照形式にする手順は、以下の通りです。
「ツール」メニューにある「オプション」を選択します。出てきたダイアログボックスで「全般」タブを開き、「設定」の項目にある「R1C1参照形式を使用する」に付いているチェックを外す。
http://trendy.nikkeibp.co.jp/article/qa/other/20020819/101538/?rt=nocnt
R1C1参照形式をA1参照形式にする手順は、以下の通りです。
「ツール」メニューにある「オプション」を選択します。出てきたダイアログボックスで「全般」タブを開き、「設定」の項目にある「R1C1参照形式を使用する」に付いているチェックを外す。
Excelで隠れたオブジェクトを全て表示
http://efcit.co.jp/cgi-bin1/exqalounge.cgi?print+200804/08040047.txt
For Each s In Activesheet.Shapes:s.Visible = True:Next
とVBエディタのイミディエイトウィンドウ(Shift+Gで表示)に記入し、その行でリターンを押すと即実行。
-----
列をまとめて非表示にしたいのですが、
「オブジェクトがシートからはみだします。その操作はできません。」
というエラーメッセージが出てしまい非表示にできません。
といった場合に使える。
For Each s In Activesheet.Shapes:s.Visible = True:Next
とVBエディタのイミディエイトウィンドウ(Shift+Gで表示)に記入し、その行でリターンを押すと即実行。
-----
列をまとめて非表示にしたいのですが、
「オブジェクトがシートからはみだします。その操作はできません。」
というエラーメッセージが出てしまい非表示にできません。
といった場合に使える。
Sunday, December 4, 2011
色のついたセルを合計 -Excel Macro
●はじめてのユーザー定義関数 ~ 色のついたセルを合計
http://hp.vector.co.jp/authors/VA016119/hajimete/udf1.html
Function CellColor(セル)
CellColor = セル.Interior.ColorIndex
End Function
という関数を作り、セルの横に色番号を記入し、それをキーに足し合わせる、という方法
●(EXCEL)CELLの色をカウントする。 - Windows NT/2000 - 教えて!goo
http://oshiete.goo.ne.jp/qa/1225959.html
上記同様に、
=GET.CELL(24,A1)
という関数で、セルの横に色番号を記入し、それをキーに足し合わせる、という方法
http://hp.vector.co.jp/authors/VA016119/hajimete/udf1.html
Function CellColor(セル)
CellColor = セル.Interior.ColorIndex
End Function
という関数を作り、セルの横に色番号を記入し、それをキーに足し合わせる、という方法
●(EXCEL)CELLの色をカウントする。 - Windows NT/2000 - 教えて!goo
http://oshiete.goo.ne.jp/qa/1225959.html
上記同様に、
=GET.CELL(24,A1)
という関数で、セルの横に色番号を記入し、それをキーに足し合わせる、という方法
折れ線グラフにおいて、データが無い所を0としない (Excel)
折れ線グラフでデータがない所を0としない
http://takashixxx.blog88.fc2.com/blog-entry-75.html
・いじったあとのセルでもデータ無しと認識させれば良いのです。
それは NA()関数を使います。
NA()関数は「エラー値#N/A(値が無効)」を返す関数です。これをIF文に絡ませて
=IF(G2="",NA(),G4/G2)
としてしまえば、G2が空白だった場合は#N/Aと表示されます。そうなればグラフの線も消えます。
・ルールの種類を「指定の値を含むセルだけを書式設定」を選び、ルールの内容編集で「エラー」のセルのみを「書式設定」で文字色を背景色と同じにします。(この例では白文字にすればOK)
そうすればエラー#N/Aは表示されているものの、背景色と同じ文字色なので見えない。という事が実現できます。
最近のOffice365では、機能として付いている模様。
http://takashixxx.blog88.fc2.com/blog-entry-75.html
・いじったあとのセルでもデータ無しと認識させれば良いのです。
それは NA()関数を使います。
NA()関数は「エラー値#N/A(値が無効)」を返す関数です。これをIF文に絡ませて
=IF(G2="",NA(),G4/G2)
としてしまえば、G2が空白だった場合は#N/Aと表示されます。そうなればグラフの線も消えます。
・ルールの種類を「指定の値を含むセルだけを書式設定」を選び、ルールの内容編集で「エラー」のセルのみを「書式設定」で文字色を背景色と同じにします。(この例では白文字にすればOK)
そうすればエラー#N/Aは表示されているものの、背景色と同じ文字色なので見えない。という事が実現できます。
最近のOffice365では、機能として付いている模様。
Subscribe to:
Posts (Atom)
