2008年11月25日

EndキーとEnd()

Excel VBA(エクセル マクロ)では、エクセルのコントロール方法を調べるのに「マクロの記録」という方法があり、セミナーの中でも紹介しています。
リスト内の上下左右の端へカーソルをジャンプさせる動きを調べるには、Endキーと相対参照キーを組み合わせて使うと簡単にVBAでの記載方法が分かります。

Excel(エクセル)でリストとは、1行目にフィールド名が並び1行目以降がデータ(レコード)になっている表のことを言いますが、この表内にカーソルを合わせて Endキーを押してから方向キー(↑↓← →)の1つを押すと、押した方向の最終データにカーソルがジャンプします。
(ショートカットキーはCtrl+方向キーです。)

これをマクロの記録中で、相対参照ボタンをOnにした状態で操作すると、

Selection.End(xlDown).Select

のように記録されます。
xlDown とは Ctrl+↓ を押した場合の動きと同じになります。
Excel(エクセル)の操作では勿論ですが、ExcelVBAでプログラムを書く際にも
セルの位置指定や移動、あるいは範囲指定方法を調べるヒントにになります。
posted by Three bit com at 10:00| Excel(エクセル)

2008年11月18日

文字列演算子 &

Excel(エクセル)のセルに入力する式内にも、Excel(エクセル)VBA(マクロ)のプログラム内にも記載できる &演算子があります。
簡単で便利なのでセミナーで式を作成するときに何気なく使っていると、使い方についてご質問を頂くことがあります。

& は文字列を結合して表示するときに使う演算子です。
例えば以下のようにA1に"東京"、B1に"花子" というデータが入力されている場合に、

C1に =A1&B1 という式を入力すると C1には "東京花子"という文字が表示されます。

-----------------------------
 A1  |  B1  |  C1
-----------------------------
東京    花子    東京花子

C1に入力する式を =A1&B1&"さん" と、修正すると以下のように表示が変わります。 
(式中に文字列を入力するときは "" ダブルクォーテーションで囲むというルールがあります。)

-----------------------------
 A1  |  B1  |  C1
-----------------------------
東京    花子    東京花子さん

この使い方をうまく応用しVLOOKUP関数と組み合わせると、複雑なデータのマッチングを行う際にも、ややこしいマクロ(VBA)を作成しなくてもよいことがあります。

またAccess(アクセス)のクロス集計クエリにも応用することができます。
posted by Three bit com at 10:00| Excel(エクセル)

2008年11月12日

テーブル名、フィールド名

Access(アクセス)のテーブル名、フィールド名、あるいはクエリ・フォーム・レポート・テキストボックスを初めとする各種コントロールの名前にスペースやハイフン(-)が入っているケースをよく拝見します。
例えば、受注テーブルに 顧客コード と 取引先コード を含める目的で

顧客 コード と 取引先 コード
あるいは
顧客-コード と 取引先-コード

といった定義をしている場合などがありますが、
空白は2つが別のフィールドであるように見えます。
ハイフンは演算子の一つ、マイナスと同じになります。

そのため上記のように定義してしまうと、これらのフィールドを使ってクエリの演算フィールドを定義したり、 フォームの演算コントロールを作成したり、あるいはマクロやVBAの中でこれらのフィールドをそのまま記載してしまうとトラブルが起きるか、あるいは作成に一手間増えてしまうことがあります。

フィールド名の途中で空白を空けたほうが見やすい場合は、空白の代わりに半角のアンダースコア( _ Shift+ひらがなの「ろ」のキー)を使うことをお薦めしています。

上記の例では 顧客_コード と 取引先_コード のように命名することになります。

英語名を使う場合には、区切りとなる文字に大文字を使用している例をよく拝見します。
アンダースコアの方が見やすければアンダースコアに変えてもよいと思います。

社内あるいは同一部署内では、こうした命名ルールは決めておいた方が、後任に引き継ぐときや、同じシステムに複数の担当者が関わるときにも都合がよいと思います。
posted by Three bit com at 10:00| Access(アクセス)

2008年11月07日

RangeのValue

Excel(エクセル)VBAのセミナーで最近よくご質問頂くことの一つにRangeのValueプロパティがあります。
例えば、セルA1に10を入力(代入)する操作をプログラムで書くと

Range("A1").Value = 10 

のように書くことができます。
ですが、実際の現場(職場)の既存のプログラムには上記の Value が省略されていて

Range("A1") = 10 

という記載が多いようです。
いずれの方法でも全く同じ結果になりますので、Valueは省略しても構いません。

Excel(エクセル)はRangeのプロパティの指定を省略すると、自動的にValueを補って解釈してくれます。

プログラムソースに曖昧さを残したくないようでしたらValueを省略せずに記載した方が分かりやすいと思います。
また初めてプログラムを書く方の場合には、Valueは省略しないで書いた方が練習になることと思います。
posted by Three bit com at 10:00| Excel(エクセル)

2008年11月02日

「セミナー季節風」スタート!

ITセミナーでよくご質問頂くことや、IT関連のニュース、あるいは開発などについて、雑感などを記載していきたいと思います。

どうぞよろしくお願いいたします。
posted by Three bit com at 10:00| ITブログ