• 締切済み

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 すぐ上の行と同じ場合には入力ができませんが、それ以外での重複している場合の入力を回避する為の改善箇所をご教示の程お願い致します。(コードが同じで入力不可)

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

ついでに、こちらにも回答を入れておきます。 >コードが同じで入力不可 なら、このようになるはずです。 テキストボックスは、コントロールツールを想定しています。 テキストボックスに入力した時に、次に移動するためのマクロも付けておきます。 当該シートのモジュールに登録してください。 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)
回答No.1

コピーの禁止のやり方(コード)は判らない。 多分質問者のレベルでは考えられないことではないかな。 ーー 重複登録は、コマンドボタンをクリックした時(すなわち追加したいとなったとき) テキストボックスからデータを採るのらしいから、その値が商品範囲の決った列に無いかどうかチェックしたら仕舞いでは。そのやり方がわからないというのか。長々と読者に我流の質問コードを読ませないで、「したくて出来ないこと」を文章でズバリ書くこと。 ーー 重複しているかのチェックは (1)総なめで既存項目といま追加しようとしている項目が同じかどうか比較していく (2)Findメソッドを使う (3)VBAのMATCH関数を使い見つからないエラーなら登録

関連するQ&A