プロが教える店舗&オフィスのセキュリティ対策術

os Windows me
エクセル2000を使用しています。

VBAマクロを使って、
ある表のA列にコードを入力すると、データベースから検索して同じ行のB列に名前が表示されるという表を作りたいのです。
入力するデータが1ヶ所であれば、IFを使って表示させる方法を本で勉強して作れたのですが、
データが約500件近くあるので、出来れば列単位で設定する方法はないでしょうか?

A 回答 (4件)

#1です。



データの持ち方がよくわかってないのですが
別シート等にコード、名前が載ってるってことなんでしょうかね?
上記の仮定でいくと
Worksheet_Change で Target が引数として渡されてまさうよね。
それをうまく使ってあげましょう。
入力したセルのひとつ横、に表示してあげればいいわけですから
現状、1ヶ所であればできる、と言っているコーディングがどのようなモノかわからないんですが
Range か Cells でセルを指定してますよね?
Cells で指定すると仮定して、
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
表示したいデータの検索
Cells(Target.Row, 2) = 表示したいデータ
End If
End Sub
という感じではどうでしょう?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
出来ました。
本当に助かりました。
今後ともよろしくお願いします。

お礼日時:2003/05/18 17:49

エクセルの問題です。

エクセルVB・VBAでも出来ますが(とくにアクセスの得意分野)エクセルの関数=VLOOKUP()を使います。まずSheet2のA列に番号、B列の同行に対応する名前を入力し表を作成します。
Sheet1のA列に番号を入れるとして、B列のB1に
=VLOOKUP(A1,Sheet2!$A$1:$B$500,2,FALSE)
といれ、B2以下適当に下へ複写します。
A列に番号を入れるとB列に名前が出ます。
テスト済み。
A列に入力していないB列のエラー#N/Aを出さないことは出来ますが、略します。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
おっしゃる通りです。
ただ、VLOOKUP関数を使って出来るのは知っているんですが、あくまでもエクセルVBAでやりたいのです。
すみません…
でも、回答いただいて嬉しいです。
ありがとうございました。

お礼日時:2003/05/15 08:57

500件近くあるデータとは、入力するデータ(行)が500件あるのでしょうか?それとも、コードが500種類あるのでしょうか?まあどちらにしろ、何度もデータベースに読みに行くのは時間がかかるので、最初にコードと名前を全部読み込んでおく方がいいと思います。


A列にコードを入力し終わったらマクロを実行して、データベースからコードを名前を取得。その後まず1行目A列を読んで、それにに対応する名前を1行目B列に表示させる、次に2行目・・とやっていって、最終行まで実行するという。
具体的なコーディングは、そのブックや表の構成など(空白行があるのかとか)も書いたほうが回答が得やすいと思いますよ。シートがいっぱいある場合、データベースから取得するタイミングも違ってくることもあると思います。

この回答への補足

質問内容が、わかりにくかったようで申し訳ありません。
私が作りたいのは、A列にコードを入力するたびにB列に名前を表示させる…ということなのです。
その表には、C列やD列(同行)にもデータをいくつか入力する表ですので、最後に表示するという形はとりたくないのです。
わかりづらい文章ですみません。よろしくお願いします。

補足日時:2003/05/14 16:06
    • good
    • 0

Excelの方で質問したほうがいいように思いますが・・・それはいいとして。



データベースはなにをお使いなのでしょう?

> データが約500件近くあるので、出来れば列単位で設定する方法はないでしょうか?

Excelのシート関数ではなくて、VBAを使ってるんですよね?
設定というのが何を指しているのかわからないのですが。
a.A列に入力するたびにB列を表示させたい
b.A列を一通り入力し終えてから一気に表示させたい
a、b、またはもっと別の方法で実現したいのか・・・によって手段が変わってくると思いますが、
aであれば Worksheet_Change イベントで処理をすればいいと思います。
bならボタンを作るか、メニューからマクロの呼び出しをして動く関数を作ればいいと思われます。

質問の意味を取り違えていたらごめんなさい。(^-^;

この回答への補足

質問内容が、わかりにくかったようで申し訳ありません。
表示方法は、(a)です。
Worksheet_Change イベントで
例えば、A2にコードを入力してB2に名前を表示させるという
1ヶ所だけの特定のセルに表示させる方法は解るのです。
ただ、500件(行)近くのデータを入力するので、いちいちA2入力→B2表示、A3入力→B3表示、とひとつひとつ設定するわけにもいかず、なんとか列単位でできる構文がないものか…ということなのです。
表現が下手で、わかりにくいかもしれませんが宜しくお願いします。

補足日時:2003/05/14 15:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!