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

締切り済みの質問

ユーザーフォームで登録する前に重複があるかチェック

売上をユーザーフォームで登録出来るようにしたいのですが、テキストボックスを10個配置して、ボックス毎にシートに入力。
A列に登録ID、B列に日付、 C列に担当者番号 、D列からJ列まで他にデータを登録して、コマンドボタンで登録させてB列からD列が重複していたら、メッセージボックスに警告を表示させて登録せずに終了させたいのですが、出来なくて困っています。初心者なので解説付きでご教授いただければ幸いです。よろしくお願いします。

投稿日時 - 2018-11-13 21:52:43

QNo.9557581

困ってます

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

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

回答(4)

ANo.4

アクセスにもフォームはある。
シートやユーザーフォームと言っているところから推測して、エクセルのはなしらしい。
ーー
そしてインプットチェックをしたいという、質問ではないかな?
すでに入力済み=重複起票or2度打ち、でないかどうかなど。
ーー
こういう複数項目を見て重複をチェックするのはムエクセルでは不得意と思う。
伝票番号が、印刷済みとかで「ユニーク」(重複して起票はない)で、この重複をチェックするのなら、Countifのような関数で済むが、複数項目の場合は複雑か。
データベース的なソフトのアクセスなら、そういうチェックや、既存ファイルを読んでみて、読めたらすでに同じデータがあるので、重複とかの判断ができる。
アクセスでは、SQLという仕組みで、各項目(複数)を指定して、レコードを読みだしやすい。
将来のためにも、利用ソフトを考え直した方がよいと思った。

投稿日時 - 2018-11-14 21:41:34

ANo.3

>数字を入力するのは、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 でもないですよ

投稿日時 - 2018-11-14 15:26:25

ANo.2

>.Cells(LR,I).value=Me.Contorols(“TextBox”&Zimbabwe)の所にエラー
Zimbabwe って何 ここには1~10の数値が入るのですが・・・

投稿日時 - 2018-11-14 14:11:54

お礼

早速ありがとうございます。
打ち間違えていました。
.Cells(LR,i).value=Me.Controls(“textbox” & l)でした。

数字を入力するのは、TextBoxの番号を入力するのですか。

何度もすいませんご教授お願いします。

投稿日時 - 2018-11-14 15:02:24

ANo.1

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

投稿日時 - 2018-11-14 09:40:09

お礼

ありがとうございます。
早速チャレンジしましたが、
.Cells(LR,I).value=Me.Contorols(“TextBox”&Zimbabwe)の所にエラーが発生してしまいます。

“textbox”を入力した時に大文字に変わらないので直接大文字を入力しましたが、何か問題と関連ありますか?

間違って入力してないか確認しましたが、見当たりません。

ご教授いただいてすいませんが、この様な状況です。

投稿日時 - 2018-11-14 13:34:53

あなたにオススメの質問