Excel VBA質問箱 IV

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

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


3294 / 13645 ツリー ←次へ | 前へ→

【63061】条件判定式にて質問です。 初心者 09/10/5(月) 13:22 質問[未読]
【63062】Re:条件判定式にて質問です。 kanabun 09/10/5(月) 14:05 発言[未読]
【63067】Re:条件判定式にて質問です。 初心者 09/10/5(月) 15:08 お礼[未読]

【63061】条件判定式にて質問です。
質問  初心者  - 09/10/5(月) 13:22 -

引用なし
パスワード
   現在作業中のExcelVBAなんですが、
-------------------
 A | B | C |
空白| 数値|数値 |
-------------------
のデータがある時、データ分繰り返し処理を行います。

Do Until IsEmpty〜と値が在るか無いかの判定で実行すると
データが既にAで存在しない為、以降のデータを無視し処理が終了してしまいます。

また、AとCにデータがあって、Bにデータが無い場合にもBの段階で終了してしまいます。

空白を無くす仕様には出来ないので、どういった条件判定式にすればいいのか
困っています。

どなたかご教授お願いします。

参照しているコードも記載しておきます。
------------------------------------------------------------------
'値が空になるまで繰り返し
Do Until IsEmpty(data(cnt)(1, i + VALUE_START))

  '数値変換が可能=測定値
  If IsNumeric(data(cnt)(1, i + VALUE_START)) Then

    '書き込み位置の確保
    .Range(NumToChr(writeCol) & writeRow + VALUE_WRITE + (i \ 2))
    .PasteSpecial Paste:=xlPasteAll

    'コメント
    .Cells(writeRow + VALUE_WRITE + (i \ 2), writeCol) = head(5, i)

    'コメント
    .Cells(writeRow + VALUE_WRITE + (i \ 2), writeCol + 1)
  
  End If
  
  i = i + 1

Loop
---------------------------------------------------------------------------

【63062】Re:条件判定式にて質問です。
発言  kanabun  - 09/10/5(月) 14:05 -

引用なし
パスワード
   ▼初心者 さん:

>-------------------
> A | B | C |
> 空白| 数値|数値 |
>-------------------
>のデータがある時、データ分繰り返し処理を行います。
>
>Do Until IsEmpty〜と値が在るか無いかの判定で実行すると
>データが既にAで存在しない為、以降のデータを無視し処理が終了してしまいます。

Do〜Loopでなく、
For〜Nextで回すとか、
  For i = 1 To 3    'カウンタ変数 i は Long型
   If Not IsEmpty(Cells(1,i).Value) Then
      If IsNumeric(Cells(1,i).Value) Then
        '処理
      End If
   End If
  Next

For Each 〜 Next で回せばよいかと思います。
  For Each c In Range("A2:C2") 'ループ変数c はRangeオブジェクト型
   If Not IsEmpty(c.Value) Then
      If IsNumeric(c.Value) Then
        '処理
      End If
   End If
  Next

【63067】Re:条件判定式にて質問です。
お礼  初心者  - 09/10/5(月) 15:08 -

引用なし
パスワード
   ▼初心者 さん:
>現在作業中のExcelVBAなんですが、
>-------------------
> A | B | C |
> 空白| 数値|数値 |
>-------------------
>のデータがある時、データ分繰り返し処理を行います。
>
>Do Until IsEmpty〜と値が在るか無いかの判定で実行すると
>データが既にAで存在しない為、以降のデータを無視し処理が終了してしまいます。
>
>また、AとCにデータがあって、Bにデータが無い場合にもBの段階で終了してしまいます。
>
>空白を無くす仕様には出来ないので、どういった条件判定式にすればいいのか
>困っています。
>
>どなたかご教授お願いします。
>
>参照しているコードも記載しておきます。
>------------------------------------------------------------------
>'値が空になるまで繰り返し
>Do Until IsEmpty(data(cnt)(1, i + VALUE_START))
>
>  '数値変換が可能=測定値
>  If IsNumeric(data(cnt)(1, i + VALUE_START)) Then
>
>    '書き込み位置の確保
>    .Range(NumToChr(writeCol) & writeRow + VALUE_WRITE + (i \ 2))
>    .PasteSpecial Paste:=xlPasteAll
>
>    'コメント
>    .Cells(writeRow + VALUE_WRITE + (i \ 2), writeCol) = head(5, i)
>
>    'コメント
>    .Cells(writeRow + VALUE_WRITE + (i \ 2), writeCol + 1)
>  
>  End If
>  
>  i = i + 1
>
>Loop
>---------------------------------------------------------------------------

For〜Nextでやって何とか対応出来ました。
早々のご回答ありがとうございました。
とても参考になりました。

また何かあったら宜しくお願いします。

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