プロが教えるわが家の防犯対策術!

VBA初心者です。初めて質問させて頂きます。
400行程度の業務管理表のマクロを作成しております。
1行につき1物件のデータですが、1物件につき3回の〆切日があります。
その3回とも"完了"かもしくは"支援なし"になったら、それぞれの作業時間を合計するような感じにしたいです。
(作業時間の方は、同じシート内の遠い場所にSplit関数で1セルずつ抽出しております。)

以下のように考えてみたのですが、全く動作せず・・・検索や書籍にあたってもなかなか該当する内容に当たらず途方に暮れております・・・。

何か原因はございますでしょうか。ご教示いただけますと幸いです。
宜しくお願い致します。

Sub 複数のセルが終了か支援なしの時()
Dim i, lRow As Long
Dim rng As Range

lRow = Cells(Rows.Count, "B").End(xlUp).Row
For i = 6 To lRow
Next
Select Case Cells(i, 16).Value & Cells(i, 24).Value & Cells(i, 34).Value
Case "終了", "支援なし"

Set rng = Union(Range(Cells(i, 178), Cells(i, 192)), _
Range(Cells(i, 206), Cells(i, 220)), _
Range(Cells(i, 234), Cells(i, 248)), _
Range(Cells(i, 262), Cells(i, 276)), _
Range(Cells(290)))
Cells(i, 43) = _
Application.WorksheetFunction.Sum(rng)

Case Else
'何も実行しない
End Select
End Sub

A 回答 (2件)

こんにちは



すでに指摘があるように、
>For i = 6 To lRow
>Next
は、何もしないループになっているので、結果的に意味が無いものになっています。
 For i = 6 To lRow
  ' 実行したい処理内容
 Next
としておかないとループが意味を持ちません。


>その3回とも"完了"かもしくは"支援なし"になったら
と言いながら
>Case "終了", "支援なし"
になっているけれど・・・?

そもそも、比較対象を
>Select Case Cells(i, 16).Value & Cells(i, 24).Value & Cells(i, 34).Value
と、3セル分連結しているので、該当する結果は、
 終了終了終了
 終了終了支援なし
 終了支援なし終了
 終了支援なし支援なし
 支援なし終了終了
 支援なし終了支援なし
 支援なし支援なし終了
 支援なし支援なし支援なし
の8種類になるのでは?

あるいは「3回とも」というのが、「全部が同じ値」という意味なら
 終了終了終了
 支援なし支援なし支援なし
の2種類ってことなのかも。


別法として、普通の関数式にしてあらかじめ設定しておけば、いちいちVBAを実行しなくても自動計算してくれると思いますけれど・・
    • good
    • 0

Nextを置く場所を間違えています。


ForとNextの間が繰り返されますので、End Subの直前に持ってきたら正常に動作するはずです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A