- 締切済み
A B C
A B C コード 商品 単価 1 チョコレート 100 2 キャンディー 50 3 ガム 80 4 スナック菓子 150 5 乳製品 170 上記表の下にデータを追加していきたいのですが、その際重複データの入力及びコピーもできないようにしたいと思います。 Private Sub CommandButton1_Click() Dim endrow As Long Dim i As Integer endrow = Range("商品").Columns(1).CurrentRegion.Rows.Count Range("商品").Rows(endrow + 1).Columns(1).Value = TextBox1.Value Range("商品").Rows(endrow + 1).Columns(2).Value = TextBox2.Value Range("商品").Rows(endrow + 1).Columns(3).Value = TextBox3.Value TextBox1.Value = Clear TextBox2.Value = Clear TextBox3.Value = Clear With Range("A2") For i = .CurrentRegion.Rows.Count To 1 Step -1 If .Offset(i, 0) = .Offset(i - 1, 0) Then .Offset(i, 0).EntireRow.Delete Next i End With End Sub すぐ上の行と同じ場合には入力ができませんが、それ以外での重複している場合の入力を回避する為の改善箇所をご教示の程お願い致します。(コードが同じで入力不可)
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
ついでに、こちらにも回答を入れておきます。 >コードが同じで入力不可 なら、このようになるはずです。 テキストボックスは、コントロールツールを想定しています。 テキストボックスに入力した時に、次に移動するためのマクロも付けておきます。 当該シートのモジュールに登録してください。 Private Sub CommandButton1_Click() Dim endrow As Long Dim myAr(0 To 2) As Variant Dim ret As Variant Dim i As Long endrow = Cells(Rows.Count, 1).End(xlUp).Row If TextBox1.Value <> "" Then myAr(0) = Val(TextBox1.Value) '数値でなかったら、Valを外す Else Exit Sub End If If TextBox2.Value <> "" Then myAr(1) = TextBox2.Value Else Exit Sub End If If TextBox3.Value <> "" And IsNumeric(TextBox3.Value) Then myAr(2) = TextBox3.Value Else Exit Sub End If 'コードで比較 ret = Application.Match(myAr(0), Columns(1), 0) If IsNumeric(ret) Then MsgBox "既に登録しています。", vbExclamation: Exit Sub Cells(endrow + 1, 1).Resize(, 3).Value = myAr For i = 1 To 3 Me.OLEObjects("TextBox" & i).Object.Value = "" Next End Sub Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Or KeyCode = 9 Then TextBox2.Activate End If End Sub Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Or KeyCode = 9 Then TextBox3.Activate End If End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
コピーの禁止のやり方(コード)は判らない。 多分質問者のレベルでは考えられないことではないかな。 ーー 重複登録は、コマンドボタンをクリックした時(すなわち追加したいとなったとき) テキストボックスからデータを採るのらしいから、その値が商品範囲の決った列に無いかどうかチェックしたら仕舞いでは。そのやり方がわからないというのか。長々と読者に我流の質問コードを読ませないで、「したくて出来ないこと」を文章でズバリ書くこと。 ーー 重複しているかのチェックは (1)総なめで既存項目といま追加しようとしている項目が同じかどうか比較していく (2)Findメソッドを使う (3)VBAのMATCH関数を使い見つからないエラーなら登録