投稿日時:

下記のVBAのソースコードを見て下さい。

Dim X As New SampleClass
Dim Y As New SampleClass

オブジェクト変数「X」もオブジェクト変数「Y」も同じクラス「SampleClass」で作られています。
よってXもYも同じプロパティ、メソッドを保有している事になります。

では、次のソースコードを見てみましょう。
ExcelのVBAでよく見られるものです。

Sheet1.Range(“A1″).Value
Sheet1.Cells(1, 1).Value

「Sheet1」はWorksheetクラスの生成済みオブジェクト。
「Range」や「Cells」はWorksheetクラスのプロパティになります。

実はRangeとCellsはプロパティ名が違うだけで、同じクラスで作られています。
定義を見てみると下記のようになっています。

Property Cells As Range
Property Range(Cell1, [Cell2]) As Range

よって、RangeもCellsも同じプロパティ、メソッドを保有している事になります。

「Value」はRangeクラスのプロパティになります。
定義は下記のとおりです。

Property Value([RangeValueDataType])

クラスは苦手、という方も多い事でしょう。
しかし、クラスとはプロパティやメソッドの集合体なだけです。
クラスを理解するには、各プロパティ、各メソッドの仕様を理解する事、つまりは「定義」を読めるようになる事が近道です。

Property プロパティ名(引数) As データ型

プロパティはこのように定義されます。
Excel VBAセミナーテキスト 2010/2007/2003対応の93ページに定義に関する詳細を記載していますので、合わせて勉強してみて下さい。

(担当:奥田 英太郎

投稿日時:

Accessでの良くあるご質問・ご相談のやりとりに、以下のようなものがあります。

「Accessのクエリでこのような集計をしたいのですが、どうすればよいですか?」
「それはSQLでこんな感じに書くと良いですよ」
「SQLですか? もっと簡単な方法はありませんか?」

SQLより簡単な方法は「ありません」。
実は、データベース(RDBMS)を扱う一番簡単で便利な方法が「SQL」なのです。

SQLはAccessを含めRDBMSを操作するためのコマンドです。
AccessのクエリはSQLを習得していない人向けの簡易機能という位置付けで、SQLで可能なこと事を100とすると、クエリのデザインビューで可能なこと事はぜいぜい50~60というイメージです。

その50、60しかない簡易機能で、アレが出来ない、コレが出来ないという話をされてしまっても、というところなのですね。

RDBMSを使う人にとって、SQLの学習は必須です。
IT系国家資格検定でも、SQLはレベル1「ITパスポート検定(旧初級シスアド)」で学ぶべきものです。

冒頭のような質問者の多くはSQLができず、SQLは難しいと思っています。
でも良く考えてみましょう。SQLが最初に規格化されたのは1986年。よく使用される「SQL99」なる規格は1999年に生まれています。

日進月歩がめまぐるしいこの手の技術。人は次から次へ便利なもの、簡単なものへと移っていきますが、SQLはこれ程長く使用されているわけです。
つまり、未だにSQLより便利なもの、簡単なものは無いということになります。

さて、このようなサンプルを用意してみました。
SQLを使用すると、このようなクエリが簡単に作れますというサンプルです。

Employeeは社員テーブル。Eventは誰が、いつ、何のイベントに参加したかの履歴テーブルです。
「クエリ1」はどの社員がどのイベントに何回参加したかを集計するクエリです。
「クエリ2」は社員ごとに最後に参加したのはいつで、どのイベントかを調べるクエリです。

SQLを少し書けば、このようなクエリが簡単に作れます。
複雑に関数を組み合わせたり、Excelに移行する必要はありません。

これはSQLができる事のほんの触りにすぎず、もっと色々な事ができるようになります。

Accessを使用する全ての人へ、アドバイスです。
喰わず嫌いをしないで、SQLをぜひ学習してみましょう。新しい世界が広がりますよ。
当校でしたら、Access クエリ/データ操作・分析実践講座にて、SQLの基礎を採り上げております。ぜひご参加をご検討下さいね。

(担当:奥田 英太郎

投稿日時:

Accessのリレーションシップを設定するには二つの方法があります。

・リレーションシップウィンドウで設定する
・クエリで設定する

クエリのデザインビューでは、複数のテーブルを追加すると自動的にリレーションシップが設定されます。
(フィールド名とデータ型が同じであり、しかもいずれか一方または両方が主キーの場合、自動的に結合されます)
そのため、クエリで設定する方法を使っている方が多いのではないでしょうか。

実は、リレーションシップの作成方法により下記のような違いがありますので、目的により使い分けをする必要があります。

【リレーションシップウィンドウで作成した場合】
・ファイル内の全てのオブジェクトで認識されるリレーションシップ
・一側テーブルにサブデータシートが作成される

【クエリのデザインビューで作成した場合】
・そのクエリおよびそれを利用したフォームやレポートのみで認識されるリレーションシップ
・テーブル同士はリレーションシップを認識していないため、サブデータシートは作成されない
・参照整合性および連鎖更新や連鎖削除の設定はできない

通常の場合はリレーションシップウィンドウで全体に適用されるリレーションシップを設定し、たとえば特殊な抽出をするために外部結合を使う場合など、そのクエリのみに適用されるリレーションシップのためにクエリのデザ

インビューで設定するという使い分けをします。ご参考としていただければ幸いです。

(担当:瀧川 仁子

投稿日時:

Accessは「データベースソフト」と言われています。
では「データベース」とは何でしょうか。

・データベース   =データを格納する
・データベース機能 =データを活用する(検索・抽出・加工)

もちろんExcelでも、ワークシートにデータを格納し、それをExcelの機能で検索・抽出・集計することが可能です。
そのため、データの管理や活用はExcelで行っている方が多いかと思われます。
しかし、Excelでは操作が煩雑だったり手作業が多く発生することも往々にしてあり、そのための作業時間と確認に時間を取られているのではないでしょうか。

特にExcelで作業を行う場合、「範囲指定を行うため、それ以降の行に追加したデータは反映されない」「毎月同じ表やグラフを作成するが、元データの構成が異なるためそれをいったん加工する必要がある」などの問題があります。
実はExcelは「できあがったデータの加工」と「見た目に関する処理」が得意である一方で、更新され続けるデータを定型的に処理するには不向きです。
そのような場合は、Accessでデータを管理する方が効率的です。

ExcelよりもAccessでデータを管理した方が良い場合は、主に以下のようなケースです。

・データ件数が多い(概ね数千件以上)
・別のワークシートやファイルを参照したり、データの種類が異なるデータを一括して集計を行う
・定期的に同じやり方での加工を行う(毎月、売上データを元に集計表を作成する等)

また、特にAccessが得意なのは、入出力のインターフェース部分です。
入力や確認のための単票フォーム等を簡単に作成でき、またExcelではWordの挿し込み印刷で行うラベル印刷もAccessのみで行うことが可能です。

(担当:瀧川 仁子

投稿日時:

紙上の計算結果と、Access上の計算結果が合わない。
そんな事ありませんか?

実はこれ、よくある事なのです。
気付いていないだけでは?良く見比べて下さい。

私達が学生時代に学習した算数、数学とコンピュータやAccess上の計算は異なります。
その違いを理解しない限り、計算結果のズレ続ける事になります。

「Access上の計算結果が合わない」には下記の3点が挙げられます。

1、浮動小数点と誤差
2、最近接偶数丸め
3、書式「通貨」の小数表示

重要な事なのに、これらに触れた書籍類を見た事がありません。
そんな本読んで勉強してたんじゃ、いつまでたっても業務効率は良くなりませんよね。

Accessを業務で役立てるためには、Accessというアプリケーションの使い方だけを学習するのではなく、コンピュータやデータベースについても幅広い学習が必要です。

もう一度、紙上の計算結果とAccess上の計算結果を見比べて下さい。
ズレていませんか?

(担当:奥田 英太郎