ユーザーフォームを作成中です。
コンボボックス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
No.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のコピーで試してみて下さい。
めぐみんさん、ありがとうございます!
重複登録しようとしたときにメッセージが出ました!
また、コードをスッキリしていただき、ありがとうございます。
本当に助かりました。
No.1
- 回答日時:
この場合、
コンボボックス1(cbokaiysa) 会社名
コンボボックス2(cbobuten) 支店名
コンボボックス3(cbotantousya) 担当者名
テキストボックス1(txtkouza) 口座番号
この4個全てが一致するデータの重複調査ですか?
それとも他の条件で・・・?(例えばどれか1つでもとか?)
ちなみに1行目は項目行?データ開始行?
めぐみんさん、ありがとうございます。
今回は4項目全てが一致する場合に重複とみなしたいと思います。
1行目は項目行となっています。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) 日付を重複させずに数えたい 4 2022/12/04 16:26
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) VBA ComboBoxについて 2 2022/10/21 12:15
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセルでユーザーフォームの入力時に重複チェックしたいのですが・・・。
Excel(エクセル)
-
【EXCEL】UserFormで入力して 重複したデータがあった場合 上書きかキャンセルかを表示させたい。
Excel(エクセル)
-
VBE ユーザーフォーム重複・空白チェック(VBE初心者)
Visual Basic(VBA)
-
-
4
エクセルマクロ:複数列 重複があった場合、メッセージと印入れる方法
Excel(エクセル)
-
5
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
6
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
7
エクセルvba (ByVal Target As Range)について
Excel(エクセル)
-
8
EXCELでの重複入力禁止を実現するVBAについて
Excel(エクセル)
-
9
最初の1回のみにボタンクリックでマクロ実行する
Visual Basic(VBA)
-
10
ユーザーフォーム上に現在日時と時刻を表示させていますがフォームを実行すると時間が更新されません。それ
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php に関して質問です。 各ユー...
-
ログイン画面から入って、「戻...
-
PHPで名寄せするには?
-
asp.netでのセッションを使用し...
-
HTMLエスケープ処理とデーター...
-
フォームに買い物かご?を付け...
-
PHP、MySQLで動作する検索プロ...
-
DTOとEntityの差は何ですか。
-
Dosブロンプトでtabを出力したい
-
「取得先」という表現について
-
wordの差し込み印刷で文字...
-
shシェルスクリプト 空白行の...
-
【C#】DataGridViewの最大列数...
-
VB.NETでボリュームを取得・設...
-
VB.NETからVBAマクロ(引数)を呼...
-
バッチファイルでpingの結果を...
-
Yahoo! JAPAN IDを新規取得でき...
-
phpでcookieがうまく保存されない
-
TreeViewのChild Node
-
Excel VBA:特定の文字列以降(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ログイン画面から入って、「戻...
-
POSTで受け渡したものを保存し...
-
ブラウザバックしてもチェック...
-
php 入力画面から確認表示画面...
-
HTMLフォームのデータ引き継ぎ...
-
VBAで重複チェックの仕方を教え...
-
php history.back()の戻るボタ...
-
セッション使用時のフォームの...
-
HTMLエスケープすべき場所につ...
-
PHPで返信メールにチェックボッ...
-
閉じるボタン「×」を制御したい
-
HTMLエスケープ処理とデーター...
-
携帯サイトにお気に入りに登録...
-
セッションを使用したページ遷移
-
ウェブアプリの設計に問題がな...
-
入力系のプログラミング手法に...
-
GETとPOST
-
asp.netでのセッションを使用し...
-
PHPでのログイン機能でのメール...
-
フォームを使わずにPOST送信す...
おすすめ情報