みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCELでのデータ入力について

 EXCEL2000でデータベースを作成する際、重複してデータを入力していないかどうかのチェックを出来るような機能or関数orVBAか何かご存知の方がいたら教えてください!
 よろしくお願い致します。

投稿日時 - 2003-10-04 21:05:52

QNo.671366

困ってます

質問者が選んだベストアンサー

モジュールだけでテストしていたので、うっかりしていました。

Formの「氏名」というTextBox の値を比較値とし、Command1 とい
うコマンドボタンでイベントを発生させるなら・・・・

Private Sub Command1_Click()
abc 氏名.Text
' abc 氏名.Value かもしれない
End Sub


最初にパラメータとして渡してください。
Private Sub abc(tSearchValue As String)

「氏名」「ふりがな」「住所」「電話番号」「各商品の数量」を全部比較するなら このプロセスを入れ子にしてループさせるか、、項目値を & でくっつけてそのくっつた文字列を比較してもいいと思います。



# Dim tSearchValue As String
# tSearchValue = (ここで比較対照の値を取得)

この2行はいりません。

投稿日時 - 2003-10-06 19:10:12

お礼

 お礼が遅くなりまして申し訳ありません。
追加の質問にも丁寧にお答え頂きまして有難うございました。とても助かりました。

投稿日時 - 2003-10-09 20:11:41

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(8)

ANo.7

Set Result = SearchRange.Find(What:="AAA1k") は

Set Result = SearchRange.Find(What:=tSearchValue)でした。

投稿日時 - 2003-10-04 22:29:02

ANo.6

'Formのクリックイベントに次のプロシージャーを貼ってみてはどうでしょうか?
'たぶん、動くのでは、

'サンプルでは、検索対象を A列にしていますが、自由に変更してください。

Private Sub abc()
Dim Result As Object
Dim SearchRange As Object
Dim tMaxRows As Long
Dim tSearchValue As String

tSearchValue = (ここで比較対照の値を取得)
tMaxRows = Cells(1, 1).CurrentRegion.Cells.Count

Set SearchRange = Range(Cells(1, 1), Cells(tMaxRows, 1)).Columns(1)
Set Result = SearchRange.Find(What:="AAA1k")
If Result Is Nothing Then
'' ここに書き込みのプロセスを書く。
Else
MsgBox "アドレス " & Result.Address & " に登録済みです。"
End If

End Sub

投稿日時 - 2003-10-04 22:24:36

補足

すみません教えて頂きたいのですが、
(ここで比較対照の値を取得) の所で
フォームのテキストボックスに入力された値(文字列)をA列にあるかどうか検索対象にしたいのですがここの部分はどのような式を書けばよいのか教えてください。
宜しくお願い致します。

投稿日時 - 2003-10-06 17:55:42

ANo.5

入力した後で,ワークシートで並べ替えの機能を使って整列すれば,同じデータは上下に並んで表示されるのですぐ見つかると思いますが,
こんなやり方ではダメなんですか?
的外れだったらゴメンナサイ。

投稿日時 - 2003-10-04 21:55:05

お礼

お礼が遅くなりまして申し訳ありません。
丁寧に回答頂きまして有難うございました。

投稿日時 - 2003-10-09 20:08:12

ANo.4

EXCELの機能でいうなら、メニューバーの「データ」→「フィルタ」。これは調べたいデータ領域を選択した後、フィルターを掛けて同一列内にある指定データだけを表示させるもので、「フィルターオプション」を設定すれば、重複データを一発削除も可能です。
もう1つは「ツール」→「入力規則」の利用。これは、データ入力時に、同じ列内に同一データが、既に入力済みなら新規入力を受け付けないようにすることも出来ます。詳細は、ヘルプで調べてください。関数やVBAの利用は、もう少し詳しい条件をご説明いただいたほうが答えるほうも答えやすいと思います。

投稿日時 - 2003-10-04 21:52:07

お礼

お礼が遅くなりまして申し訳ありません。
丁寧に回答頂きまして有難うございました。

投稿日時 - 2003-10-09 20:06:34

ANo.3

http://www.okweb.ne.jp/kotaeru.php3?q=669422
とそっくりの質問のような気がしますが。
入力する予定のセル範囲を指定して、
データ-入力規則-設定タブ-(入力の種類)ユーザー設定-(数式)=MATCH(A1,$A$1:A1,0)=ROW()でOKをクリック。

投稿日時 - 2003-10-04 21:44:57

お礼

 お礼が遅くなりまして申し訳ありません。
丁寧に回答頂きまして有難うございました。

投稿日時 - 2003-10-09 20:04:31

ANo.2

こんばんは

↓の過去の掲示が参考になるかもしれません

作業列を使いたくなければ #3
作業列を使ってよろしいのであれば #5
入力規則を使うなら #3の条件を逆にした式 >=1 → <=1
を データ 入力規則 設定タブ ユーザー設定 に
入力範囲に設定すればOKです。

参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=628682

投稿日時 - 2003-10-04 21:39:42

お礼

お礼が遅くなりまして申し訳ありません。
参考URLまで丁寧に教えてくださってどうもありがとうございました。

投稿日時 - 2003-10-09 20:01:25

ANo.1

最低限、どの位置にどんなデーターをどんなスタイルで持たせるか書いた方がいいですよ。

投稿日時 - 2003-10-04 21:20:36

補足

 扱うデータは顧客の予約リストなのですが、入力する内容は顧客の「氏名」「ふりがな」「住所」「電話番号」「各商品の数量」です。入力はVBAのフォームを使用して、ワークシート上にデータ-が入るようにする予定です。

投稿日時 - 2003-10-04 21:26:05

あなたにオススメの質問