アプリ版:「スタンプのみでお礼する」機能のリリースについて

ユーザーフォームを作成中です。

コンボボックス1(cbokaiysa) 会社名を選択
コンボボックス2(cbobuten) 支店名を選択
コンボボックス3(cbotantousya) 担当者名を選択
テキストボックス1(txtkouza) 口座番号入力
テキストボックス2(txtsei) 姓入力
テキストボックス3(txtseihuri) 姓(フリガナ)入力
テキストボックス4(txtmei) 名入力
テキストボックス5(txt) 名(フリガナ)入力

とし、コマンドボタン(touroku)をクリックすると「登録情報」シートのA〜H列の一番下に転記されるようにしました。


コマンドボタン(touroku)クリックする際、

コンボボックス1(cbokaiysa) 会社名
コンボボックス2(cbobuten) 支店名
コンボボックス3(cbotantousya) 担当者名
テキストボックス1(txtkouza) 口座番号

が同じデータが既に「登録情報」シートにある場合に既に登録があると表示させたいのですが、
この場合どのようにしたらよいのでしょうか?

以下に現在のコードを記載いたします。
どこに何を追加したら良いのか教えていただけませんでしょうか?

どうぞよろしくお願いいたします。



Private Sub syuuryou_Click()
End
End Sub

Private Sub touroku_Click()
Dim res
res = MsgBox("登録します。よろしいですか?", vbYesNo + VbInfomation, "確認")
If res = vbNo Then
Exit Sub
End If
Sheets("登録情報").Activate
Dim Lrow
Lrow = Sheets("登録情報").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("登録情報").Range("A" & Lrow).Value = cbokaisya
Sheets("登録情報").Range("B" & Lrow).Value = cbobuten
Sheets("登録情報").Range("C" & Lrow).Value = cbotantousya
Sheets("登録情報").Range("D" & Lrow).Value = txtkouza
Sheets("登録情報").Range("E" & Lrow).Value = txtsei
Sheets("登録情報").Range("F" & Lrow).Value = txtseihuri
Sheets("登録情報").Range("G" & Lrow).Value = txtmei
Sheets("登録情報").Range("H" & Lrow).Value = txtmeihuri
End Sub

Private Sub UserForm_Initialize()
Dim cnt
Dim Lrowcbokaisya.ColumnCount = 1
Lrow = Sheets("会社").Range("A" & Rows.Count).End(xlUp).Row
For cnt = 1 To Lrow
cbokaisya.AddItem Sheets("会社").Cells(cnt, 1).Value
Next
cbobuten.ColumnCount = 1
Lrow = Sheets("部店").Range("A" & Rows.Count).End(xlUp).Row
For cnt = 1 To Lrow
cbobuten.AddItem Sheets("部店").Cells(cnt, 1).Value
Next
cbotantousya.ColumnCount = 1
Lrow = Sheets("担当者").Range("A" & Rows.Count).End(xlUp).Row
For cnt = 1 To Lrow
cbotantousya.AddItem Sheets("担当者").Cells(cnt, 1).Value
Next
End Sub

A 回答 (2件)

'~略~


Dim Lrow
With Sheets("登録情報")
If WorksheetFunction.CountIfs(.Range("A:A"), cbokaisya, .Range("B:B"), cbobuten, .Range("C:C"), cbotantousya, .Range("D:D"), txtkouza) = 1 Then
MsgBox "表示したい内容(既に登録ありの時)"
Exit Sub
Else
Lrow = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & Lrow).Value = cbokaisya
.Range("B" & Lrow).Value = cbobuten
.Range("C" & Lrow).Value = cbotantousya
.Range("D" & Lrow).Value = txtkouza
.Range("E" & Lrow).Value = txtsei
.Range("F" & Lrow).Value = txtseihuri
.Range("G" & Lrow).Value = txtmei
.Range("H" & Lrow).Value = txtmeihuri
End If
End With
End Sub

今回はCountIfs関数を用いてみました。
With~End With を使うとスッキリ纏まるかも。
Bookのコピーで試してみて下さい。
    • good
    • 0
この回答へのお礼

めぐみんさん、ありがとうございます!
重複登録しようとしたときにメッセージが出ました!

また、コードをスッキリしていただき、ありがとうございます。
本当に助かりました。

お礼日時:2020/05/04 18:19

この場合、



コンボボックス1(cbokaiysa) 会社名
コンボボックス2(cbobuten) 支店名
コンボボックス3(cbotantousya) 担当者名
テキストボックス1(txtkouza) 口座番号

この4個全てが一致するデータの重複調査ですか?
それとも他の条件で・・・?(例えばどれか1つでもとか?)

ちなみに1行目は項目行?データ開始行?
    • good
    • 0
この回答へのお礼

めぐみんさん、ありがとうございます。
今回は4項目全てが一致する場合に重複とみなしたいと思います。

1行目は項目行となっています。

よろしくお願いいたします。

お礼日時:2020/05/04 17:38

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

このQ&Aを見た人はこんなQ&Aも見ています