• ベストアンサー

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

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

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

  • ベストアンサー
回答No.8

モジュールだけでテストしていたので、うっかりしていました。 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行はいりません。

poston
質問者

お礼

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

その他の回答 (7)

回答No.7

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

回答No.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

poston
質問者

補足

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

回答No.5

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

poston
質問者

お礼

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

  • diashun
  • ベストアンサー率38% (94/244)
回答No.4

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

poston
質問者

お礼

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

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

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

poston
質問者

お礼

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

  • comv
  • ベストアンサー率52% (322/612)
回答No.2

こんばんは ↓の過去の掲示が参考になるかもしれません 作業列を使いたくなければ #3 作業列を使ってよろしいのであれば #5 入力規則を使うなら #3の条件を逆にした式 >=1 → <=1 を データ 入力規則 設定タブ ユーザー設定 に 入力範囲に設定すればOKです。

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

お礼

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

回答No.1

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

poston
質問者

補足

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

関連するQ&A

専門家に質問してみよう