プロが教える店舗&オフィスのセキュリティ対策術

CommandButton1を押すとワークシートに値を転記するUserform1を作りました。
やりたいことは、ワークシートに転記する前に登録済フリガナと、Userform1のTextBox1を比較し、重複していれば J列 の重複チェックに"●”を入れ、ダイアログで重複していることを表示、処理を抜ける。重複していなければ新規登録できるようにしたいです。フリガナの小さい”ァ”や”ッ”等の拗音(捨て仮名)を大きな文字”ア””ツ”にした J列 も必要かと思い作りました。本を参考にコードを書いていますが、どこをどのようにしたらいいのか分からず困っています。コードと一緒に説明文があると大変助かります。コードはこちらです。よろしくお願いいたします。
ワークシート名:請求先
A列:No. B列:フリガナ(会社名を半角カタカナスペースなしで入力) ~ H列:重複チェック
J列:拗音をExcelのSubstituteで大きくしたフリガナ
-----------Userform1のコード--------------
Private Sub CommandButton1_Click()
'入力必須項目が未入力なら終了(登録しない)
If TextBox1.Text = "" Then
MsgBox "半角カタカナスペースなしで入力してください。", vbInformation, "確認"
Exit Sub
End If
'各テキストボックスの値をシートに転記
Dim TargetRow As Integer
TargetRow = Range("A" & Rows.Count).End(xlUp).Offset(1).Row
Range("A" & TargetRow).Value = TargetRow - 1
Range("B" & TargetRow).Value = TextBox1.Text
Range("C" & TargetRow).Value = TextBox2.Text
Range("D" & TargetRow).Value = TextBox3.Text
Range("E" & TargetRow).Value = TextBox4.Text
Range("F" & TargetRow).Value = TextBox5.Text
'リストボックスに追加
ListBox1.AddItem TargetRow - 1
ListBox1.List(ListBox1.ListCount - 1, 1) = TextBox1.Text
ListBox1.List(ListBox1.ListCount - 1, 2) = TextBox2.Text
ListBox1.List(ListBox1.ListCount - 1, 3) = TextBox3.Text
ListBox1.List(ListBox1.ListCount - 1, 4) = TextBox4.Text
ListBox1.List(ListBox1.ListCount - 1, 5) = TextBox5.Text
'コントロールのクリア
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub userform_Initialize()
'初期化処理
Worksheets("請求先").Activate
'リストボックスの設定
With ListBox1
.Font.Size = 12
.ColumnCount = 6
.ColumnWidths = "1cm;6cm;8cm;2cm;11cm;2cm"
.TextAlign = fmTextAlignLeft
'リストボックスに請求先情報を追加
Dim I As Integer
Dim lastrow As Integer
lastrow = Range("A" & Rows.Count).End(xlUp).Row
For I = 2 To lastrow
If Cells(I, 7).Value <> 1 Then
.AddItem Cells(I, 1).Value
.List(.ListCount - 1, 1) = Cells(I, 2).Value
.List(.ListCount - 1, 2) = Cells(I, 3).Value
.List(.ListCount - 1, 3) = Cells(I, 4).Value
.List(.ListCount - 1, 4) = Cells(I, 5).Value
.List(.ListCount - 1, 5) = Cells(I, 6).Value
End If
Next
End With
End Sub

「VBA 重複チェック後に値をワークシート」の質問画像

A 回答 (1件)

https://office-hack.com/excel/countif-vba/

CountIfにて("検索したい列範囲 例:Range("B:B")",TextBox1.Text) が1になれば既に存在しているので書き込まないようIf文で分岐をさせるとか?
    • good
    • 0
この回答へのお礼

めぐみん_様、ありがとうございます。考え方を参考にやってみたいと思います。

お礼日時:2023/03/23 11:29

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

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