・印刷時のページ設定の変更方法
・片対数グラフのグリッド
・複数ヶ所をコピーする場合
・保存したはずのマクロが使えないとき
・自動マクロ機能させずにエクセル起動する
・無効となったマクロを有効可とする方法.
・ワークシートで自動計算が実施されないときに自動計算に設定しなおす方法
・マクロ消す方法
・CSV形式ファイルの注意事項
・数式エディタ使用する方法
・ワークシートにボタンを配置する方法
・ExcelVBの標準モジュールの保存および読込する方法
・ExcelVBでファイル名を取得する方法
・CSVファイルを開くときの注意(二重開きなど)
・ユーザ関数の定義
・ExcelVBの行継続文字
・セルに名前をつける
・列番号をR1C1形式からA1形式に戻す方法.
・進数の変換(例えば10進数→16進数)をする方法
・標準モジュールでワークシート関数を用いる方法
・標準モジュール内でA1形式のセルの行番号および列番号を求める方法.
・標準モジュール内でR1C1形式からA1形式を求める方法.
・戻り値が複数ある場合の関数の使い方.
・ExcelVBで行クリアもしくは列クリア.
・ExcelでFFT.
・印刷時のページ設定の変更方法
[表示]→[改ページプレビュー]を実行後
ページの境目をマウスでドラッグする.
・片対数グラフのグリッド
片対数グラフのグリッドの間隔は10以上でないと設定できない.
ただし10以下の場合はダミーデータを作って破線を表示し
軸の表示も同様にダミーデータを作ってラベル表示する.
片対数グラフにするには横軸を逆クリックして軸の書式設定にて
対数目盛にて表示するのチェックボックスをチェックすればよい.
・複数ヶ所をコピーする場合
貼り付けるときにツールバーのアイテムの中から
コピー内容を選択して貼り付けることができる.
・保存したはずのマクロが使えないとき
マクロの記録でマクロの保存先が個人用マクロブックになっていない場合
保存先を個人用マクロブックにすれば使えるようになる場合がある.
・自動マクロ機能させずにエクセル起動する
Shiftキーを押しながらエクセル起動させる.
・無効となったマクロを有効可とする方法.
メニューから[ツール]→[マクロ]→[セキュリティ]を選択し
セキュリティレベルを中にし,エクセルを再起動すると
マクロを有効とするか無効とするか選択できるようになる.
エクセル97の場合はメニューから[ツール]→[オプション]の「全般」タブを選択し
「マクロウィルスから保護する」のチェツクをはずしてOKボタンをクリック.
・ワークシートで自動計算が実施されないときに自動計算に設定しなおす方法.
メニューバーから[ツール]→[オプション]を選択し
計算方法のタグで計算方法の設定を自動に設定する.
ただし,セルの書式設定の表示形式が文字列になっている場合は
「=」等が文字扱いされて実行されないので,その場合は表示形式を
標準などに変更する必要がある.
・マクロ消す方法
[ツール]−[マクロ]−[Visual Basic Editor]
の手順でVisualBasicEditorを開いて
標準モジュールのうち要らないモジュールにカーソルをあてて
左クリック(左効き仕様)でモジュールの解放を選択すればマクロ消える.
・CSV形式ファイルの注意事項
CSV形式のファイルのデータにおいて一番左上のセルに"ID"と記述されている
CSVファイルはエクセルでファイル開こうとすると
SYLK:ファイル形式が正しくありません.
というメッセージが表示されて開くことができない.
・数式エディタ使用する方法
[挿入]-[オブジェクト]-[Microsoft数式]を選択すると
エクセル上に数式エディタで記述した数式を挿入できる.
・ワークシートにボタンを配置する方法
Excelのメニューから「表示−ツールバー−コントロールツールボックス」を選ぶ
「コントロールツールボックス」にある「コマンドボタン」をマウスでクリックし
そのままワークシート上でドラッグしてボタンを作成可.
一度作成したボタンを再編集する場合は,再度Excelのメニューから
「表示−ツールバー−コントロールツールボックス」を選びデザインモード(三角定規のアイコン)
とすれば再編集可能.
ボタンにマクロを割り当てる場合は上記でコントロールツールボックスではなく
フォームを選択してボタンを配置し,ボタンのフチを逆クリックしてマクロ登録を選択し標準モジュール
に登録されたマクロを選択することによりボタンにマクロの割当可能.
ボタンに割当てる標準モジュールは
Sub モジュール名()
:
中身
:
End Sub
の形式で記述すればよい.
また,SheetにSubプロシージャを記述して,その中からCall文を用いて
Sub 名前()
:
call 呼び出したい標準モジュール()
:
End Sub
として,これをボタンに割付けてもよい.
呼び出したい標準モジュールに()がつかない場合は
call文も外して呼び出したい標準モジュール名のみ記述すること.
(そうしないとエラー発生する.)
値を返したい場合はFunctionプロシージャを用いる(標準モジュールに記述).
その場合は
Function 名前() As 型式(例 Variant)
:
中身
:
名前 = 出力する値
:
End Function
の形式で記述すればよい.
SheetにSubプロシージャを記述して,普通の関数のように
Sub 名前()
:
Range("A5").Value = 名前()
:
End Sub
のように用いれば,これをボタンに割付けることができる.
Excel2007の場合は
Officeボタンをクリック.
→ Excelのオプションをクリック.
→ 開発タブをリボンに表示するのチェックボックスをチェック.
メニューに開発メニューが表示されるので,その中のコントロール内の挿入から
フォームを選択してボタンを配置する.
・ExcelVBの標準モジュールの保存および読込する方法
コード表示されている画面でプロジェクトエクスプローラの標準モジュールの中の
保存したいモジュールを選択し,逆クリックしてエクスポートで保存することができる.
(標準モジュールの拡張子は.bas)
同様に標準モジュールを選択し逆クリックしてインポートで保存した標準モジュールを
読込むことが出来る.
モジュール名は半角英数字を用いたほうが良い.
(全角文字を用いたりするとcall文で呼び出すときにエラーでる場合がある.)
モジュール名とプロシージャ名を同じにすると
「モジュールではなく,変数またはプロシージャを指定してください」
のようなコンパイルエラーが発生する可能性があるので
モジュール名とプロシージャ名は同じにしないこと.
・ExcelVBでファイル名を取得する方法.
Application.GetOpenFilenameを用いる.
例えば
Dim OpenFileName As Variant '←変数定義
OpenFileName = Application.GetOpenFilename() '
ActiveCell.FormulaR1C1 = OpenFileName
として用いると,選択したファイルのファイル名をディレクトリ付で
R1C1の場所に表示する.
Dim OpenFileName As Variant '←変数定義
OpenFileName = Application.GetOpenFilename() '
ActiveSheet.Range("A3").Value = OpenFileName
とすると選択したファイルのファイル名をディレクトリ付で
A3の場所に表示する.また,
ActiveSheet.Range("A4").Value = Dir(OpenFileName)
でファイル名をA4に表示,
ActiveSheet.Range("A5").Value = CurDir(OpenFileName)
でディレクトリをA5に表示することができる.
更に
Workbooks.Open Filename:=OpenFileName
とすると上記でファイル名を取得したファイルを開くことができる.
また
Range("A3").Value = Application.ActiveWorkbook.FullName
とすることにより,現状アクティブとなっているワークブックのファイル名を
ディレクトリ付でA3の場所に表示することができる.
・CSVファイルを開くときの注意(二重開きなど)
Application.Workbooks.Open(ディレクトリ付のファイル名).Activate
としてファイルを開きアクティブ化している状態で
Application.Workbooks.Open(ディレクトリ付のファイル名).Close
で閉じようとすると,二重開きになる場合がある.これは
ActiveWorkbook.Close
とすることにより解決できる.
ただし,このままだとファイルを閉じる際にファイルを保存するか質問される可能性がある.
保存せずに強制終了する場合は
ActiveWorkbook.Close (False)
とすればよい.
・ユーザ関数の定義.
コード表示の画面でメニューバーから挿入を選択することによって標準モジュールを追加し
Function 関数名(入力)
End Function
で定義する.出力する変数は関数名で扱う.
定義後,メニューバーから[挿入]-[関数]-[ユーザ定義]で定義した関数を
用いることが出来るようになる.
関数を定義したモジュールを開放することにより定義した関数を削除することができる.
・ExcelVBの行継続文字.
半角スペースとアンダーバーを組み合わせたもの( _)
2つの行を1つの行として結合させる働きがある.
・セルに名前をつける.
名前をつけたいセルを選択し,ツールバー左上の名前ボックス(通常はA1などの表示されている部分)
に名づけたい名前を入力する.
一つのセルだけでなく,範囲を選択して範囲に対して名前をつけることも可能.
つけた名前を削除する場合,メニューバーの[挿入(I)]-[名前(N)]-[定義(D)]をクリックし
削除したい名前を選択し,削除ボタンをクリックする.
・列番号をR1C1形式からA1形式に戻す方法.
メニューバーの【ツール】→【オプション】を選択し,
【全般】タブを選択し,『R1C1参照形式を使用する』のチェックをはずす.
・進数の変換(例えば10進数→16進数)をする方法.
メニューバーから「ツール」→「アドイン」の中の「分析ツール」にチェックをいれる.
=DEC2HEX(10)で「10」が16進数に変換され「A」とセルに表示される.
=DEC2HEX(数値,桁数)で桁数指定も可能.
10進数→2進数 DEC2BIN
10進数→8進数 DEC2OCT
10進数→16進数 DEC2HEX
8進数→2進数 OCT2BIN
8進数→10進数 OCT2DEC
8進数→16進数 OCT2HEX
16進数→2進数 HEX2BIN
16進数→8進数 HEX2OCT
16進数→10進数 HEX2DEC
前後に余計な文字がついていたらLEFT関数やRIGHT関数やMID関数を
用いて文字を抽出してから上記関数を用いればよい.
進数の変換をした場合,変換後の値は文字として扱われるので
グラフ表示など変換後の値を数字として用いたい場合は
Value()関数を用いて数値に変換すること.
Excel VBA では
10進数→16進数 HEX()
16進数→10進数 CInt("&H"&" ") もしくは CLng("&H"&" ")
( 上記の" "内に16進数を記述する.)
・標準モジュールでワークシート関数を用いる方法.
ActiveSheet.Range("IV65536").Value = "=Row(" + RangeName + ")"
RowNumberIni = ActiveSheet.Range("IV65536")
ActiveSheet.Range("IV65536").Value = ""
のようにどこかのシートに関数を記述して,その結果を用いるようにすればつかえる.
また,ワークシート関数によっては
Application.WorkSheetFunction.ワークシート関数
のように記述すれば直接用いることのできるものもある.
Application.WorkSheetFunction.ワークシート関数
で実行できない関数の中には,例えばLeft関数などは,直接
ABC = Left("abc", 1)
のようにして実行できる場合がある.
・標準モジュール内でA1形式のセルの行番号および列番号を求める方法.
Range("A3").Row
Range("A3").Column
とすれば行番号,列番号を求めることができる.
・標準モジュール内でR1C1形式からA1形式を求める方法.
Cells(2,3).Address(False, False)
とすればR2C3のセルの位置のA1形式(B3)を求めることができる.
・戻り値が複数ある場合の関数の使い方.
関数の戻り値が複数ある場合は
ActiveSheet.Range("IV1").Value = 戻したい値
:
ActiveSheet.Range("IV65536").Value = 戻したい値
などとして一度シートなどに値を記入すればよい.
Funcitionは用いるときに
代入する変数 = 関数の名前()
のように用いなければいけないので,ダミーの変数を用意する必要がある.
(もしくは最初からSubを用いる.)
・ExcelVBで行クリアもしくは列クリア.
行クリアする場合は
Rows("2:2").ClearContents
列クリアする場合は
Columns("D:D").ClearContents
のようにすれば削除できる.
・ExcelでFFT.
アドインで分析ツールをインストールしてあれば
メニューバーから[ツール]→[分析ツール]→[フーリエ解析]でFFTできる.
ただし,最大データ点数は4096点
また,ためしにマクロ記録してみたところコードは
Application.Run "ATPVBAEN.XLA!Fourier", Workbooks.Open(OpenFileName).ActiveSheet.Range("$B$2:$B$65"), _
ActiveSheet.Range("$C$2:$C$65"), False, False
のようになった.
Application.Run "ATPVBAEN.XLA!Fourier", Workbooks.Open(OpenFileName).ActiveSheet.Range("$B$2:$B$65"), _
, False, False
とすると,新規のBookのA1からFFT結果が記述される.
| |