Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9470 / 13644 ツリー ←次へ | 前へ→

【27152】値入力 TN 05/7/30(土) 15:23 質問[未読]
【27154】Re:値入力 だるま 05/7/30(土) 15:34 回答[未読]
【27160】Re:値入力 TN 05/7/30(土) 22:17 質問[未読]
【27163】Re:値入力 ponpon 05/7/31(日) 1:31 回答[未読]
【27164】Re:値入力 ichinose 05/7/31(日) 6:36 発言[未読]
【27165】Re:値入力 TN 05/7/31(日) 9:00 お礼[未読]

【27152】値入力
質問  TN  - 05/7/30(土) 15:23 -

引用なし
パスワード
   こんにちは。
テキストボックスの値をシート1のA列に入力する時
同じ値が重複されるのを防ぐために下記のように
記述しました。
Private Sub CommandButton1_Click()
  Set WS1 = Worksheets("Sheet1")
  If WS1.Range("A:A").Find(TextBox1.Value) Is Nothing Then
    WS1.Range("A65536").End(xlUp).Offset(1, 0) = TextBox1.Value
  End If
End Sub
しかし、A列に「111」の数値が入力してあると「11」や「1」も
同じ値と認識されてしまい、入力できません。
どうすれば良いか教えて頂けないでしょうか。
よろしくお願いします。

【27154】Re:値入力
回答  だるま WEB  - 05/7/30(土) 15:34 -

引用なし
パスワード
   Findの引数を省略しないで書けばよろしいかと。^d^

【27160】Re:値入力
質問  TN  - 05/7/30(土) 22:17 -

引用なし
パスワード
   だるまさん、早速の回答ありがとうございました。
考えてはみたのですが、まだまだ初心者で
どのように記述すればよいか解りません。
具体的にお願いできますでしょうか?

【27163】Re:値入力
回答  ponpon  - 05/7/31(日) 1:31 -

引用なし
パスワード
   こんばんは。

ヘルプから
LookAt  省略可能です。バリアント型 (Variant) の値を使用します。使用できる定数は、XlLookAt クラスの xlWhole または xlPartです。

xlWhole 完全一致
xlPart  部分一致

従って、LookAtにxlWhole を指定すれば良いと思います。

入力するのが、数値だけなのか。文字列もあるのか分かりませんが、
数値だけと考えて、もっと良い方法があるかもしれませんが、これでどうでしょうか?

Private Sub CommandButton1_Click()
  Set WS1 = Worksheets("Sheet1")
  If IsNumeric(Me.TextBox1.Value) = False Or IsEmpty(Me.TextBox1.Value) Then
   MsgBox "空白や文字列は入力できません。"
     With Me.TextBox1
      .Value = ""
      .SetFocus
     End With
   
   ElseIf WS1.Range("A:A").Find(what:=TextBox1.Value, LookAt:=xlWhole) Is Nothing Then
     WS1.Range("A65536").End(xlUp).Offset(1, 0) = TextBox1.Value
   Else
     MsgBox "その値は、すでにあります。" & Chr(13) & _
         "入力し直してください。"
     With Me.TextBox1
      .Value = ""
      .SetFocus
     End With
     
   End If
End Sub

【27164】Re:値入力
発言  ichinose  - 05/7/31(日) 6:36 -

引用なし
パスワード
   皆さん、おはようございます。

「ある」か「ない」かの判断なら、Countif関数を使用する方法も
考えられます。

'========================================================
Private Sub CommandButton1_Click()
  Set WS1 = Worksheets("Sheet1")
  If WorksheetFunction.CountIf(WS1.Range("A:A"), TextBox1.Text) = 0 Then
    WS1.Range("A65536").End(xlUp).Offset(1, 0) = TextBox1.Text
  End If
End Sub

確認してください。

【27165】Re:値入力
お礼  TN  - 05/7/31(日) 9:00 -

引用なし
パスワード
   ponponさん
ichinoseさん
回答ありがとうございました。

ここ数日悩んでたことがやっと解決できました。
また何かありましたらよろしくお願いします。

9470 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free