Excel VBA質問箱 IV

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

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


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

【25437】For文の中にIf文を入れる方法 05/5/31(火) 22:40 質問[未読]
【25438】Re:For文の中にIf文を入れる方法 ichinose 05/5/31(火) 23:17 発言[未読]
【25440】Re:For文の中にIf文を入れる方法 05/5/31(火) 23:27 お礼[未読]
【25445】Re:For文の中にIf文を入れる方法 05/6/1(水) 8:48 質問[未読]
【25452】Re:For文の中にIf文を入れる方法 つん 05/6/1(水) 10:27 回答[未読]
【25486】Re:For文の中にIf文を入れる方法 05/6/2(木) 0:21 お礼[未読]

【25437】For文の中にIf文を入れる方法
質問    - 05/5/31(火) 22:40 -

引用なし
パスワード
   Excel2000です。

numというテキストボックスが空っぽなら、nameというテキストボックスに 0 を、
numに文字が入っていて、その文字がA1〜A5の中に入っていれば、
nameというテキストボックスに 10 を、
入っていなければnameテキストボックスに 1000 を入れたいのですが、
A5の時にしか反応しません。
ソースは以下なのですが、どこがおかしくて、どう改善したら良いのでしょうか?
どなたか教えてください><

 For i = 1 To 5
  If num = "" Then
   name = 0  
  ElseIf num = Cells(i, 1) Then
   name = 10  
  Else
   name = 1000
  End If
 Next

【25438】Re:For文の中にIf文を入れる方法
発言  ichinose  - 05/5/31(火) 23:17 -

引用なし
パスワード
   ▼氷 さん:
こんばんは。
よく動いてますね!!下のコードで・・・。

nameという名前ではエラーになりますけどね。
numを----txtnum
nameを---txtname にしてみましょう。
それから、プロパティは付けるようにして下さい。


>numというテキストボックスが空っぽなら、nameというテキストボックスに 0 を、
>numに文字が入っていて、その文字がA1〜A5の中に入っていれば、
>nameというテキストボックスに 10 を、
>入っていなければnameテキストボックスに 1000 を入れたいのですが、
>A5の時にしか反応しません。
>ソースは以下なのですが、どこがおかしくて、どう改善したら良いのでしょうか?
>どなたか教えてください><
これだとせっかくA1で見つかってもループを抜けてないですからね!!
これを基に修正するなら
>
  Dim ans As String
  ans = 1000
  For i = 1 To 5
   If txtnum.Text = "" Then
     ans = 0
     Exit For
   ElseIf txtnum.Text = Cells(i, 1).Value Then
     ans = 10
     Exit For
    End If
   Next
  txtname.Text = ans

こんな感じでしょうか?
でも、もっと違う方法もあると思いますよ!!

【25440】Re:For文の中にIf文を入れる方法
お礼    - 05/5/31(火) 23:27 -

引用なし
パスワード
   ichinoseさん、ご返信ありがとうございます^^
おかげさまで自分がしようとしていたコトが出来るようになりました。
ループから抜ける Exit For というのが必要なんですね・・・。
勉強になりました><
本当にありがとうございました^^

【25445】Re:For文の中にIf文を入れる方法
質問    - 05/6/1(水) 8:48 -

引用なし
パスワード
   初めの問題は解決出来たのですが、また別の問題が出てきてしまいました。

したいことは、num.Textとname.Textの両方が、今あるデータと重複していなければ、
新たに追加する、ということをしたいのですが、
num.Textというテキストボックスが空っぽなら、name.Textというテキストボックスに 0 を、num.Textに文字が入っていて、その文字がA1〜A5の中に入っていれば、
name.Textというテキストボックスに 10 を、入っていなければname.Textテキストボックスには後で文字を入れるために空けておく、
というようにしたいです。


A1〜A5に、「あ」「い」「う」「え」「お」と一文字ずつ入れて、
txtnameに「あ」と打つと、txtnumに「登録済みです」と表示されるのですが、
「あ」と打って、登録済みと表示された後に、「あ」の後ろに「か」と打ち、
txtnameの中身を「あか」にしたときには、A1〜A5には該当しないので、
txtnumには何も表示しないようにしたいのですが、出来ませんでした。
txtボックスの中身が変更されたら、実行するというような命令か何かが
あるのでしょうか?
どなたか解決策をご存知でしたら教えてください><


 For i = 1 To 5
  If name.Text = "" Then
   num.Text = ""
   Exit For
  ElseIf name.Text = Cells(i, 1).Value Then
   num.Text = "登録済みです"
   Exit For   
  End If
 Next

【25452】Re:For文の中にIf文を入れる方法
回答  つん E-MAIL  - 05/6/1(水) 10:27 -

引用なし
パスワード
   おはようございます^^
横から失礼します。

> For i = 1 To 5
>  If name.Text = "" Then
>   num.Text = ""
>   Exit For
>  ElseIf name.Text = Cells(i, 1).Value Then
>   num.Text = "登録済みです"
>   Exit For   
>  End If
> Next

とりあえず、一番最初に、txtNumの初期化しちゃうとか・・・

 Dim i As Long
  
 txtNum.Text = ""

 For i = 1 To 5
  If txtName.Text = "" Then
   txtNum.Text = ""
   Exit For
  ElseIf txtName.Text = Cells(i, 1).Value Then
   txtNum.Text = "登録済みです"
   Exit For
  End If
 Next

こんな風に。
いかがでしょう?
安易かな?(^^;

テキストボックスの名前はichinoseさんがおっしゃってるように変更されたんですよね?

【25486】Re:For文の中にIf文を入れる方法
お礼    - 05/6/2(木) 0:21 -

引用なし
パスワード
   つんさん、ご返信ありがとうございます^^
変数は、プロパティ等もちゃんと書くようにしました。
おかげさまで問題が解決出来ました。
ありがとうございました^^

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