Excel VBA質問箱 IV

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

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


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

【29337】セルが空になるまでマクロを実行したい jony 05/10/1(土) 18:53 質問[未読]
【29338】Re:セルが空になるまでマクロを実行したい かみちゃん 05/10/1(土) 19:17 回答[未読]
【29351】Re:セルが空になるまでマクロを実行したい jony 05/10/2(日) 1:07 質問[未読]
【29353】Re:セルが空になるまでマクロを実行したい かみちゃん 05/10/2(日) 17:03 回答[未読]
【29355】Re:セルが空になるまでマクロを実行したい jony 05/10/2(日) 19:03 発言[未読]
【29356】Re:セルが空になるまでマクロを実行したい かみちゃん 05/10/2(日) 19:36 回答[未読]

【29337】セルが空になるまでマクロを実行したい
質問  jony  - 05/10/1(土) 18:53 -

引用なし
パスワード
     F    G  H  I 〜 AM

7
8 有or無 日付 名
 
9
10 〃
11
12 〃
F列は結合7:8 9:10 のように結合してます。有無べつに色わけ(I7〜am8)しています。
で、F7以降セルに有か無が入っているまでマクロを実行するようにしたいのですがどこにemptyを入れればいいかよくわかりませんので教えて下さい。
f7:f8の色は変えることができたので とりあえず乗せておきます。
Sub 色変え()
If range("f7,f8").Value = "無" Then
  range("I7:AM8").Select
  With Selection.Interior
    .ColorIndex = 15
    .Pattern = xlSolid
  End With
ElseIf range("f7,f8").Value = "有" Then
  range("f7:am8").Select
  With Selection.Interior
    .ColorIndex = 2
    .Pattern = xlSolid
  End With
ElseIf range("f7,f8").Value = "" Then
    range("f7:am8").Select
  With Selection.Interior
    .ColorIndex = 2
    .Pattern = xlSolid
  End With
End If

End Sub

【29338】Re:セルが空になるまでマクロを実行したい
回答  かみちゃん  - 05/10/1(土) 19:17 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>F列は結合7:8 9:10 のように結合してます。有無べつに色わけ(I7〜am8)しています。
>で、F7以降セルに有か無が入っているまでマクロを実行するようにしたいのですがどこにemptyを入れればいいかよくわかりませんので教えて下さい。

有無別に色わけというより、「無」の場合は、背景色とパターンを変え、
そうでない場合は、背景色とパターンは「自動」にするということでいいでしょうか?

Option Explicit

Sub 色変え()
 Dim RowNo As Long
 
 RowNo = 7
 Do Until Range("F" & RowNo & ",F" & RowNo + 1).Value = ""
  Range("I" & RowNo & ":AM" & RowNo + 1).Select
  If Range("F" & RowNo & ",F" & RowNo + 1).Value = "無" Then
   With Selection.Interior
    .ColorIndex = 15
    .Pattern = xlSolid
   End With
  Else
   With Selection.Interior
    .ColorIndex = xlNone
    .Pattern = xlNone
   End With
  End If
  RowNo = RowNo + 2
 Loop
End Sub

【29351】Re:セルが空になるまでマクロを実行したい
質問  jony  - 05/10/2(日) 1:07 -

引用なし
パスワード
   かみさん、即応対してくださりありがとうございました。
ひとつ聞きたかったのですが、例えばH6というセルに対してHの部分をj,k,lのようにloopしていきたい場合どうすればいいのですか?

【29353】Re:セルが空になるまでマクロを実行したい
回答  かみちゃん  - 05/10/2(日) 17:03 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>例えばH6というセルに対してHの部分をj,k,lのようにloopしていきたい

どこまでLoopするのか、Loopして何がしたいのかがよくわからないのですが、
たとえば、以下のようにすると、H6から1列ずつ右方向へ値がないセルになると
処理が終わります。

Sub Macro1()
 Dim ColumnNo As Integer
 ColumnNo = 8
 Do Until Cells(6, ColumnNo) = ""
  MsgBox Cells(6, ColumnNo).Address(0, 0)
  ColumnNo = ColumnNo + 1
 Loop
 MsgBox "終了〜"
End Sub

【29355】Re:セルが空になるまでマクロを実行したい
発言  jony  - 05/10/2(日) 19:03 -

引用なし
パスワード
   H6〜AM6には1〜31までの数が順に入っていて今日の日付分があった場合、
例えばH6が今日の日付と一緒だったならH列のセルの色を変える。みたいなマクロを作りたかったのです。

【29356】Re:セルが空になるまでマクロを実行したい
回答  かみちゃん  - 05/10/2(日) 19:36 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>H6〜AM6には1〜31までの数が順に入っていて今日の日付分があった場合、
>例えばH6が今日の日付と一緒だったならH列のセルの色を変える。みたいなマクロを作りたかったのです。

追加の質問とはいえ、そういうことは、最初にはっきり書いてくださいね。
場合によっては、別案が使える場合がありますから。

ということで、Loopを使うのであれば、次のようになります。

Sub Macro1()
 Dim ColumnNo As Integer
 
 ColumnNo = 8
 Columns("H:AM").Interior.ColorIndex = xlNone
 Do Until Cells(6, ColumnNo).Value = ""
  If Cells(6, ColumnNo).Value = Day(Now()) Then
   Columns(ColumnNo).Interior.ColorIndex = 15
   Exit Do
  End If
  ColumnNo = ColumnNo + 1
 Loop
 MsgBox "終了〜"
End Sub

ところが、今回の場合は、Loopを使わなくても、次のようなコードで十分かと思います。

Sub Macro2()
 Columns("H:AM").Interior.ColorIndex = xlNone
 Columns(7 + Day(Now())).Interior.ColorIndex = 15
 MsgBox "終了〜"
End Sub

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