OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

VBAで条件式について

  • すぐに回答を!
  • 質問No.204616
  • 閲覧数75
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 40% (2/5)

EXEL(VBA)で例えば、A列のデータが入っている行までの中で数値(x)が 
x<2 ならばセルに色をぬる。そして空白セルと x>2ならば色をぬらない。
という条件式は、どうしたらいいのですか?
Sub InteriorColor()
For j= 5 to 21
worksheets(j).activate
For i = 1 to 40 '30から40行ぐらい
While cells(6+i,6)<>""
If(cells(6+i,6).value<2) Then ’6列7行目から 
with selection.interior
.Colorindex=45
.patern=xlsorid
End with
Wend
End if
Next i
Next j
End sub

ということを連続していない列(5列ぐらい)に対してします。
同じ命令文になる部分もあるので簡潔にしたいという希望もあります。
上部の命令では無限ループの可能性があり実行が止まりません。

どのように記述したらいいのですか?
また、同じブックのシート25枚のうち5枚目から21枚目に対して処理します。
5から21までのシートの間で関係ないシートが7枚目と10枚目と15枚目にあります。それを省いての処理もあれば教えてください。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル13

ベストアンサー率 68% (791/1163)

質問の意味を理解している? 質問のコードを少し変えて見ました。 『30から40くらい、連続していない列(5列くらい)』の捉え方が問題ですが、そこにデータが入っていると解釈して書いています。6列目より右、7行目より下を対象にしています。 ご参考に。 Sub InteriorColor2()   Dim ws As Worksheet 'ワークシート   Dim ...続きを読む
質問の意味を理解している?

質問のコードを少し変えて見ました。
『30から40くらい、連続していない列(5列くらい)』の捉え方が問題ですが、そこにデータが入っていると解釈して書いています。6列目より右、7行目より下を対象にしています。

ご参考に。

Sub InteriorColor2()
  Dim ws As Worksheet 'ワークシート
  Dim wsIdx As Integer 'ワークシートのインデックス
  Dim rw As Long '行カウンタ
  Dim col As Integer '列カウンタ
  Dim rwLast As Long '使っている最後の行
  Dim colLast As Integer '使っている最後の列
  Dim actvSheet As Integer '最初のシート

  actvSheet = ActiveSheet.Index 'マクロを起動したシート
  Application.ScreenUpdating = False '画面更新を止める

  For wsIdx = 5 To 21
    '必要なシートだったら色を塗る処理を行う
    If Not (wsIdx = 7 Or wsIdx = 10 Or wsIdx = 15) Then
      Set ws = Worksheets(wsIdx) 'ワークシートを定義
      '色を塗るシートをアクティブにする
      ws.Activate
        '使っている最後の行
        rwLast = ws.Cells.SpecialCells(xlCellTypeLastCell).Row
        '使っている最後の列
        colLast = ws.Cells.SpecialCells(xlCellTypeLastCell).Column

        For rw = 7 To rwLast '7行目から使っている最後の行まで
          For col = 6 To colLast '6列目から使っている最後の列まで
            'セルの内容が数字だったら
            If IsNumeric(Cells(rw, col)) = True Then
              '入力があって2未満だったら
              If Cells(rw, col) <> "" And Cells(rw, col) < 2 Then
                Cells(rw, col).Interior.ColorIndex = 45
                Cells(rw, col).Interior.Pattern = xlSolid
              End If
            End If
          Next
        Next

    End If
  Next

  Worksheets(actvSheet).Select 'マクロを起動したシートに戻す
  Application.ScreenUpdating = True '画面更新を戻す
End Sub
お礼コメント
a12b06

お礼率 40% (2/5)

参考になりました。ありがとうございました。
投稿日時 - 2002-01-29 12:10:45
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ