- 締切済み
ユーザーフォームで登録する前に重複があるかチェック
売上をユーザーフォームで登録出来るようにしたいのですが、テキストボックスを10個配置して、ボックス毎にシートに入力。 A列に登録ID、B列に日付、 C列に担当者番号 、D列からJ列まで他にデータを登録して、コマンドボタンで登録させてB列からD列が重複していたら、メッセージボックスに警告を表示させて登録せずに終了させたいのですが、出来なくて困っています。初心者なので解説付きでご教授いただければ幸いです。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
アクセスにもフォームはある。 シートやユーザーフォームと言っているところから推測して、エクセルのはなしらしい。 ーー そしてインプットチェックをしたいという、質問ではないかな? すでに入力済み=重複起票or2度打ち、でないかどうかなど。 ーー こういう複数項目を見て重複をチェックするのはムエクセルでは不得意と思う。 伝票番号が、印刷済みとかで「ユニーク」(重複して起票はない)で、この重複をチェックするのなら、Countifのような関数で済むが、複数項目の場合は複雑か。 データベース的なソフトのアクセスなら、そういうチェックや、既存ファイルを読んでみて、読めたらすでに同じデータがあるので、重複とかの判断ができる。 アクセスでは、SQLという仕組みで、各項目(複数)を指定して、レコードを読みだしやすい。 将来のためにも、利用ソフトを考え直した方がよいと思った。
- watabe007
- ベストアンサー率62% (476/760)
>数字を入力するのは、TextBoxの番号を入力するのですか。 普通、UserFormにTextBoxを設けるとオブジェクト名TextBox1、TextBox2 と増えていきます。今回TextBoxが10個あるのでTextBox1~TextBox10まで あると仮定しています。 For i = 1 To 10 .Cells(LR, i).Value = Me.Controls("TextBox" & i).Value Next 変数にiには1から10の値が与えられ "TextBox" & i とすることで 順次 TextBox1、TextBox2 ・・・ と処理されていきます。 >Cells(LR,i).value=Me.Controls(“textbox” & l)でした。 今回使っている変数はiです。Zimbabwe でも I でもないですよ
- watabe007
- ベストアンサー率62% (476/760)
>.Cells(LR,I).value=Me.Contorols(“TextBox”&Zimbabwe)の所にエラー Zimbabwe って何 ここには1~10の数値が入るのですが・・・
- watabe007
- ベストアンサー率62% (476/760)
Sheet1にデータがあるとしています Private Sub CommandButton1_Click() Dim FR As Range, n As Long, LR As Long, i As Long With Worksheets("Sheet1") 'B列をTextBox2を条件に抽出 .Range("A1").AutoFilter Field:=2, Criteria1:=Me.TextBox2.Value 'C列をTextBox3を条件に抽出 .Range("A1").AutoFilter Field:=3, Criteria1:=Me.TextBox3.Value 'D列をTextBox3を条件に抽出 .Range("A1").AutoFilter Field:=4, Criteria1:=Me.TextBox4.Value '抽出された範囲を変数FRに格納 Set FR = .AutoFilter.Range '抽出された個数を変数nに格納 n = FR.Columns(1).SpecialCells(12).Count - 1 '抽出モードを解除 .AutoFilterMode = False If n > 0 Then MsgBox Me.TextBox2.Value & "は、既に登録済です。", 16 Else '登録処理 LR = Cells(Rows.Count, "A").End(xlUp).Row + 1 For i = 1 To 10 .Cells(LR, i).Value = Me.Controls("TextBox" & i) Next End If End With End Sub
お礼
ありがとうございます。 早速チャレンジしましたが、 .Cells(LR,I).value=Me.Contorols(“TextBox”&Zimbabwe)の所にエラーが発生してしまいます。 “textbox”を入力した時に大文字に変わらないので直接大文字を入力しましたが、何か問題と関連ありますか? 間違って入力してないか確認しましたが、見当たりません。 ご教授いただいてすいませんが、この様な状況です。
お礼
早速ありがとうございます。 打ち間違えていました。 .Cells(LR,i).value=Me.Controls(“textbox” & l)でした。 数字を入力するのは、TextBoxの番号を入力するのですか。 何度もすいませんご教授お願いします。