Excel VBA質問箱 IV

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

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


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

【41401】Do〜Loopの「否」の表現 ToShiYo 06/8/9(水) 7:52 質問[未読]
【41406】Re:Do〜Loopの「否」の表現 だるま 06/8/9(水) 9:50 回答[未読]
【41407】Re:Do〜Loopの「否」の表現 neptune 06/8/9(水) 9:51 回答[未読]
【41421】Re:Do〜Loopの「否」の表現 ToShiYo 06/8/9(水) 18:51 お礼[未読]

【41401】Do〜Loopの「否」の表現
質問  ToShiYo  - 06/8/9(水) 7:52 -

引用なし
パスワード
   C10のテキストが17行目の列のテキストと「同じ場合」と「否の場合」を
Do〜Loopを使って検出しています。
「否」のコードを強引に入れましたが、このような方法で良いのでしょうか。
If構文に対しての「否」の定石があればアドバイスお願いします。

Dim i As Integer
  i = 1
  Do While Cells(17, i + 2) <> ""   
    If Cells(17, i + 2) = Range("C10") Then
     MsgBox "「" & Range("C10").Value & "」の文字がありました"
     Exit Sub
    End If 
   i = i + 1
  Loop
     MsgBox "(C6)" & "の" & Range("C10") & "と同じ文字はありません"

【41406】Re:Do〜Loopの「否」の表現
回答  だるま WEB  - 06/8/9(水) 9:50 -

引用なし
パスワード
   添削させていただくとこんな感じでしょうか。^d^

Sub test2()
  Dim Flg As Boolean
  Dim i As Integer
  
  Flg = False
  i = 1
  Do While Cells(17, i + 2) <> ""
    If Cells(17, i + 2).Value = Range("C10").Value Then
      Flg = True
      Exit Do
    End If
    i = i + 1
  Loop
  
  If Flg Then
    MsgBox "「" & Range("C10").Value & "」の文字がありました"
  Else
    MsgBox "(C6)の" & Range("C10").Value & "と同じ文字はありません"
  End If
End Sub

【41407】Re:Do〜Loopの「否」の表現
回答  neptune  - 06/8/9(水) 9:51 -

引用なし
パスワード
   ▼ToShiYo さん:
私見ですが、

>C10のテキストが17行目の列のテキストと「同じ場合」と「否の場合」を
>Do〜Loopを使って検出しています。
>「否」のコードを強引に入れましたが、このような方法で良いのでしょうか。
自分の目的が気持ち良く達成できるのなら「良い」です。
定石はあるかないか知りませんが、あっても、
データ量と、データの保持形式なんかに左右されるでしょうね?


無駄はあります。
Cells(17, i + 2)
は仕方ないとして
rangeオブジェクト、Range("C10") に何度もアクセスしている
データを変数に収めるべき。

いっその事全部配列に格納してやると効率的。
データ量にもよるかもしれないが。

べたに全部見るのではなく、Findメソッド?、Match関数などを
検索件数が多くなると、処理速度は使った方が圧倒的に速いはずです。
(私は使ったことないので過去ログ検索して下さい)

結論としては最初に書きましたが
自分の目的が正確に、気持ち良く達成できるのなら「良い」です。
が、改良の余地は沢山あるというところでしょうか。

【41421】Re:Do〜Loopの「否」の表現
お礼  ToShiYo  - 06/8/9(水) 18:51 -

引用なし
パスワード
   ▼だるま さん neptune さん:

貴重なコードとアドバイス頂きありがとうござました。
これからもよろしくお願いします。

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