2008年12月25日

可視セルの選択と集計

Excel(エクセル)でグループ集計を行う機能の一つに[データ]メニューの[集計]という機能があります。

Excelの応用レベルの講習会ではいつもご紹介しています。
ピボットテーブルに比べると機能名に特色がないせいか、意外にご存知ない方が多いようです。

この集計という機能を使うとExcel(エクセル)の行番号の左隣にアウトラインが表示され、一部のデータ(レコード)を非表示にしたり、再表示したりすることができます。

データを非表示にしたままの状態でレコードをコピーすると、非表示のデータも一緒にコピーされてしまいますので、範囲指定には一手間増えることになりご質問頂くことがあります。

Excel(エクセル)のジャンプ機能を使うと簡単に表示レコードだけを範囲指定することができます。

ジャンプ機能は
 あらかじめコピーしたい範囲をドラッグしておきます。
 [編集]メニューから[ジャンプ]を選択します。
 [ジャンプ]ダイアログボックスの左下にある[セル選択]ボタンを押します。
 [可視セル]というオプションをクリックし[OK]ボタンを押します。

非表示になっているセルは範囲指定されないため、画面はちょうどCtrlキーを押しながらドラッグしたような画面表示になって範囲が点滅します。

後は通常のコピーと貼り付けを使えば表示レコードだけをコピーすることができます。
便利な集計機能ではありますが、その特色を理解して使わないと不便に感じてしまうこともありますね。
posted by Three bit com at 10:00| Excel(エクセル)

2008年12月18日

MsgBoxで改行

ExcelVBA入門セミナーやAccessVBA入門セミナーの一番最初で、いつもご紹介しているMsgBox関数というものがあります。

例えばExcel(エクセル)を閉じるときに 「Book1への変更を保存しますか?」 のようなメッセージが表示されることがありますが、これもMsgBoxです。

このMsgBoxのダイアログ画面内で改行して、長い説明文や結果を表示したいときには改行を表す vbCrLf を使うことができます。例えば次のように & に続けて記載します。

 MsgBox "終了します。" & vbCrLf & "よろしいですか?"

表示結果は次のように2行に分けて表示されます。

 終了します。
 よろしいですか?

vbCrLf 以外にも vbCr あるいは vbLf と書いても同じような動きをしますので、1つ覚えておくと便利ですし、3つとも同じように使えることを知っておくと、参考書や他の人が書いたプログラムを読むときに役立つと思います。

posted by Three bit com at 10:00| Excel & Access

2008年12月16日

範囲名(名前の定義)

Excel(エクセル)には、セル範囲に名前を付ける機能があります。
色々な場合に使えるので便利なのですが、Excelの応用レベルの講習会や、ExcelVBAのセミナー時にご紹介することが多いのですが8〜9割の方が使ったことがないようです。

操作手順は、

 あらかじめ名前を付けておきたいセル範囲をドラッグしておきます。
 [挿入]メニューから[名前]の[定義]を選択します。
 「名前の定義」ダイアログボックスが表示されますので、
 「名前」欄に範囲名として付けておきたい名前を入力します。
 [追加]ボタンを押した後に[OK]ボタンを押してダイアログを閉じます。

範囲名をつけたセル範囲にジャンプするには、

 Excel(エクセル)の左上にある「名前ボックス」の右側の「▼」ボタンから範囲名を選択するだけで、
 該当するセル範囲にジャンプすることができます。
 「名前ボックス」とは、数式バーの左側で通常はアクティブセルのセル番地が表示されている
 ボックスのことです。

よく利用するリストにジャンプする場合や印刷範囲を切り替えたい時にも便利ですが、他にはVLOOKUP関数の第二引数にもよく使われます。

VLOOKUPでデータを参照する際に、参照するデータ件数が増減した場合でも、関数を修正せずに範囲名の定義だけを修正すればよいのでお薦めです。
posted by Three bit com at 10:00| Excel(エクセル)

2008年12月11日

ADOとは?

データベースと連携したシステム開発をしている開発者の中では日常的によく使うADOですが、セミナー参加者の方に伺うと、IT関連部門の方やデータベース開発経験がある方を除き、ほとんどの方がご存知ないようです。

ADOとはエーディーオーと呼びますがMicrosoft ActiveX Data Objectsの略称です。
AccessでAlt+F11を押してVBE(エディタ)を起動した後、[ツール]メニューの[参照設定]を確認してみてください。
Access2000〜2003では既定でチェックが付いていますので、すぐに使えますし、2007の場合もチェックを入れれば使えるようになります。

ADOは一言でその役割を説明すると「データベースとやり取りするためのマイクロソフトのテクノロジーの一つ」です。
Accessの場合では、例えばフォームからプログラムを起動し、テーブルやクエリの各レコード・各フィールドをきめ細かくコントロールしたい場合には、AccessのフォームからADOを利用して、Accessデータベースとやり取りをすることになります。

プログラミングの際には、AccessVBAのエディタ画面で、フォームやレポートをコントロールするAccessVBAの命令以外に、ADOのテクノロジーも併せて利用しながらプログラムを書いていくことになります。

前任者が作成したシステムを解析したい場合にも、プログラムの中に例えば、

Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset

のように、ADODBなどが含まれているようでしたら、ADOの知識も習得しておく必要があります。
また、最近ではExcelとAccessを連携させたシステム事例を多く拝見するようになりましたが、ExcelからもADOを使ってAccessのデータとのやり取りをすることができますので、知識が増えるほど業務での活用範囲は広がることと思います。 
posted by Three bit com at 10:00| Excel & Access

2008年12月09日

ワークシートを新規ブックにコピーする

ワークシートを、新しいブックを作成してそのブックにコピーする方法は簡単な記述ですが、かえって分かりにくいこともあるようです。

セミナーの実習時にマクロの記録を使ってVBAでの記述を調べて頂くと、よくそうしたご質問頂きます。
例えばSheet1を新規ブックに移動する処理は、マクロの記録では以下のように記録されます。

Sheets("Sheet1").Copy

Sheet1をコピーしているだけなのに、なぜ新しいブックが出るのだろう? という疑問が出てきます。
Copyというキーワードの上でF1(ヘルプ)を押して、WorksheetsオブジェクトのCopyメソッドを調べてみてください。

ヘルプ説明の解説欄に説明が書かれています。
Copyメソッドは本来引数としてBeforeまたはAfterのいずれかを指定することができますが、その両方を省略した場合は、新規ブックが自動的に作成され、シートはそのブック内にコピーされるようになっています。

マクロの記録は便利な面もある一方、記録されたままでは意味が分からないことや、そのまま実行すると動かないことも少なくありません。記録結果はヘルプ、Web、参考書などで再度正確な意味を調べてからプログラムの中で利用しておくと、次回以降のプログラミングに役立つことが多いように思います。
posted by Three bit com at 10:00| Excel(エクセル)