Excel VBA質問箱 IV

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

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


10315 / 13646 ツリー ←次へ | 前へ→

【22515】検索方法を教えて下さい たかし 05/2/23(水) 11:15 質問[未読]
【22519】Re:検索方法を教えて下さい G-Luck 05/2/23(水) 11:55 回答[未読]
【22521】Re:検索方法を教えて下さい たかし 05/2/23(水) 12:42 お礼[未読]
【22531】Re:検索方法を教えて下さい たかし 05/2/23(水) 14:57 質問[未読]
【22534】Re:検索方法を教えて下さい G-Luck 05/2/23(水) 15:11 回答[未読]
【22544】Re:検索方法を教えて下さい たかし 05/2/23(水) 16:19 お礼[未読]

【22515】検索方法を教えて下さい
質問  たかし E-MAIL  - 05/2/23(水) 11:15 -

引用なし
パスワード
   はじめまして。
VBA初心者で、分からないことだらけなのですが、本を見ながらがんばってます。

UserformにあるTextBoxに数字が入力されて、CommandButtonクリックで、A列の
下から検索し文字が入力されているセルの1行下に通し番号を入力し、同じ行のB列に
TextBoxの値を入力するマクロを作りました。
この入力された数値がB列にすでに入力されていた場合にMesBoxを出し、A列、B列の
数値を削除したいのですが、どうすればいいのでしょうか?

宜しくお願いします。

【22519】Re:検索方法を教えて下さい
回答  G-Luck  - 05/2/23(水) 11:55 -

引用なし
パスワード
   ▼たかし さん:
>はじめまして。
>VBA初心者で、分からないことだらけなのですが、本を見ながらがんばってます。
>
>UserformにあるTextBoxに数字が入力されて、CommandButtonクリックで、A列の
>下から検索し文字が入力されているセルの1行下に通し番号を入力し、同じ行のB列に
>TextBoxの値を入力するマクロを作りました。
>この入力された数値がB列にすでに入力されていた場合にMesBoxを出し、A列、B列の
>数値を削除したいのですが、どうすればいいのでしょうか?
>
>宜しくお願いします。

値を代入する前に、判定をもうけて同じ値が無い場合に代入するというようにしてはいかがでしょうか?

サンプルコードは最後に示します。

解説をつけますと
  Set rg = Range("B:B").Find(TextBox.Value)
B:Bの範囲でTextBoxと同じ値のセル(複数ある場合は最初のセル)をrgに代入する

  rg Is Nothing
Nothingは、何も代入されていない状態なので、
rgに何も入力されていない場合、Trueを返します。(オブジェクト比較)

Private Sub test()

  Const myMessage As String = "同じ値が入力されています"
  Dim rg As Range
  
  Set rg = Range("B:B").Find(TextBox.Value)
  If rg Is Nothing Then
    '代入処理
  Else
    MsgBox myMessage
  End If
End Sub

【22521】Re:検索方法を教えて下さい
お礼  たかし E-MAIL  - 05/2/23(水) 12:42 -

引用なし
パスワード
   ▼G-Luck さん:
ありがとう御座います。
早速試してみます。

>▼たかし さん:
>>はじめまして。
>>VBA初心者で、分からないことだらけなのですが、本を見ながらがんばってます。
>>
>>UserformにあるTextBoxに数字が入力されて、CommandButtonクリックで、A列の
>>下から検索し文字が入力されているセルの1行下に通し番号を入力し、同じ行のB列に
>>TextBoxの値を入力するマクロを作りました。
>>この入力された数値がB列にすでに入力されていた場合にMesBoxを出し、A列、B列の
>>数値を削除したいのですが、どうすればいいのでしょうか?
>>
>>宜しくお願いします。
>
>値を代入する前に、判定をもうけて同じ値が無い場合に代入するというようにしてはいかがでしょうか?
>
>サンプルコードは最後に示します。
>
>解説をつけますと
>  Set rg = Range("B:B").Find(TextBox.Value)
>B:Bの範囲でTextBoxと同じ値のセル(複数ある場合は最初のセル)をrgに代入する
>
>  rg Is Nothing
>Nothingは、何も代入されていない状態なので、
>rgに何も入力されていない場合、Trueを返します。(オブジェクト比較)
>
>Private Sub test()
>
>  Const myMessage As String = "同じ値が入力されています"
>  Dim rg As Range
>  
>  Set rg = Range("B:B").Find(TextBox.Value)
>  If rg Is Nothing Then
>    '代入処理
>  Else
>    MsgBox myMessage
>  End If
>End Sub

【22531】Re:検索方法を教えて下さい
質問  たかし E-MAIL  - 05/2/23(水) 14:57 -

引用なし
パスワード
   ▼G-Luck さん:
早速試してみました。うまくいきました。
ありがとう御座います。

そこで、隣のC列も条件に入れようとしたのですが、うまくいきません。
C列には同じ数値があるのに入力してしまいます。
どこがおかしいのか教えて下さい。
宜しくお願いします。

Private Sub test()

 Const myMessage As String = "同じ値が入力されています"
 Dim rg As Range

 Set rg = Range("B:B").Find(TextBox.Value)
 If rg Is Nothing Then
  Set rg = Range("C:C")Find(TextBox.Value)
  If rg As Nothing Then
   '代入処理
  Else
   MsgBox myMassage
  End If
 Else
  MsgBox myMessage
 End If
End Sub


>▼たかし さん:
>>はじめまして。
>>VBA初心者で、分からないことだらけなのですが、本を見ながらがんばってます。
>>
>>UserformにあるTextBoxに数字が入力されて、CommandButtonクリックで、A列の
>>下から検索し文字が入力されているセルの1行下に通し番号を入力し、同じ行のB列に
>>TextBoxの値を入力するマクロを作りました。
>>この入力された数値がB列にすでに入力されていた場合にMesBoxを出し、A列、B列の
>>数値を削除したいのですが、どうすればいいのでしょうか?
>>
>>宜しくお願いします。
>
>値を代入する前に、判定をもうけて同じ値が無い場合に代入するというようにしてはいかがでしょうか?
>
>サンプルコードは最後に示します。
>
>解説をつけますと
>  Set rg = Range("B:B").Find(TextBox.Value)
>B:Bの範囲でTextBoxと同じ値のセル(複数ある場合は最初のセル)をrgに代入する
>
>  rg Is Nothing
>Nothingは、何も代入されていない状態なので、
>rgに何も入力されていない場合、Trueを返します。(オブジェクト比較)
>
>Private Sub test()
>
>  Const myMessage As String = "同じ値が入力されています"
>  Dim rg As Range
>  
>  Set rg = Range("B:B").Find(TextBox.Value)
>  If rg Is Nothing Then
>    '代入処理
>  Else
>    MsgBox myMessage
>  End If
>End Sub

【22534】Re:検索方法を教えて下さい
回答  G-Luck  - 05/2/23(水) 15:11 -

引用なし
パスワード
   ▼たかし さん:
>▼G-Luck さん:
>早速試してみました。うまくいきました。
>ありがとう御座います。
>
>そこで、隣のC列も条件に入れようとしたのですが、うまくいきません。
>C列には同じ数値があるのに入力してしまいます。
>どこがおかしいのか教えて下さい。
>宜しくお願いします。
>
>Private Sub test()
>
> Const myMessage As String = "同じ値が入力されています"
> Dim rg As Range
>
> Set rg = Range("B:B").Find(TextBox.Value)
> If rg Is Nothing Then
>  Set rg = Range("C:C")Find(TextBox.Value)
               ↑.

>  If rg As Nothing Then
      ↑Is
スペルミスでは?

>   '代入処理
>  Else
>   MsgBox myMassage
>  End If
> Else
>  MsgBox myMessage
> End If
>End Sub

後、Findの検索範囲を変更すれば、Ifを重ね無くてもいいと思います。
Set rg = Range("B:C").Find(TextBox.Value)

【22544】Re:検索方法を教えて下さい
お礼  たかし E-MAIL  - 05/2/23(水) 16:19 -

引用なし
パスワード
   ▼G-Luck さん:
ありがとう御座いました。
うまくいきました。
分からないことがいっぱいありそうなので、また活用したいと思います。
そのときは、宜しくお願いします。

>▼たかし さん:
>>▼G-Luck さん:
>>早速試してみました。うまくいきました。
>>ありがとう御座います。
>>
>>そこで、隣のC列も条件に入れようとしたのですが、うまくいきません。
>>C列には同じ数値があるのに入力してしまいます。
>>どこがおかしいのか教えて下さい。
>>宜しくお願いします。
>>
>>Private Sub test()
>>
>> Const myMessage As String = "同じ値が入力されています"
>> Dim rg As Range
>>
>> Set rg = Range("B:B").Find(TextBox.Value)
>> If rg Is Nothing Then
>>  Set rg = Range("C:C")Find(TextBox.Value)
>               ↑.
>
>>  If rg As Nothing Then
>      ↑Is
>スペルミスでは?
>
>>   '代入処理
>>  Else
>>   MsgBox myMassage
>>  End If
>> Else
>>  MsgBox myMessage
>> End If
>>End Sub
>
>後、Findの検索範囲を変更すれば、Ifを重ね無くてもいいと思います。
>Set rg = Range("B:C").Find(TextBox.Value)

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