Excel VBA質問箱 IV

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

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


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

【56575】条件に応じて指定範囲の背景色を変える表 blackjet 08/6/23(月) 13:51 質問[未読]
【56578】Re:条件に応じて指定範囲の背景色を変える表 ひげくま 08/6/23(月) 14:03 回答[未読]
【56579】Re:条件に応じて指定範囲の背景色を変える表 blackjet 08/6/23(月) 14:08 質問[未読]
【56581】Re:条件に応じて指定範囲の背景色を変える表 ひげくま 08/6/23(月) 14:24 回答[未読]
【56582】Re:条件に応じて指定範囲の背景色を変える表 blackjet 08/6/23(月) 15:11 質問[未読]
【56583】Re:条件に応じて指定範囲の背景色を変える表 ひげくま 08/6/23(月) 15:17 発言[未読]
【56584】Re:条件に応じて指定範囲の背景色を変える表 blackjet 08/6/23(月) 15:30 質問[未読]
【56585】Re:条件に応じて指定範囲の背景色を変える表 neptune 08/6/23(月) 15:55 発言[未読]
【56591】Re:条件に応じて指定範囲の背景色を変える表 blackjet 08/6/23(月) 16:20 お礼[未読]
【56586】Re:条件に応じて指定範囲の背景色を変える表 ひげくま 08/6/23(月) 16:00 回答[未読]
【56588】Re:条件に応じて指定範囲の背景色を変える表 blackjet 08/6/23(月) 16:13 質問[未読]
【56590】Re:条件に応じて指定範囲の背景色を変える表 ひげくま 08/6/23(月) 16:19 回答[未読]
【56592】Re:条件に応じて指定範囲の背景色を変える表 blackjet 08/6/23(月) 16:23 お礼[未読]
【56593】Re:条件に応じて指定範囲の背景色を変える表 ひげくま 08/6/23(月) 16:30 回答[未読]
【56599】Re:条件に応じて指定範囲の背景色を変える表 blackjet 08/6/23(月) 17:38 お礼[未読]
【56587】Re:条件に応じて指定範囲の背景色を変える表 Yuki 08/6/23(月) 16:08 発言[未読]
【56589】Re:条件に応じて指定範囲の背景色を変える表 blackjet 08/6/23(月) 16:16 お礼[未読]
【56594】Re:条件に応じて指定範囲の背景色を変える表 blackjet 08/6/23(月) 16:36 質問[未読]
【56595】Re:条件に応じて指定範囲の背景色を変える表 Yuki 08/6/23(月) 16:47 発言[未読]
【56596】Re:条件に応じて指定範囲の背景色を変える表 blackjet 08/6/23(月) 16:57 お礼[未読]

【56575】条件に応じて指定範囲の背景色を変える表
質問  blackjet E-MAIL  - 08/6/23(月) 13:51 -

引用なし
パスワード
   初心者なので困ってます。


  A B C D
1 あ   
2 い
3
4

例えば A1 に指定条件の ”あ”が入力されたときに
自動的に A1:D1 まで 背景が 赤 に
同様に A2 に指定条件の ”い”が入力されたときに
自動的に A2:D2 まで 背景が 青 に改行されてもなるような
表を作りたいんですがどなたか教えてください。
宜しくお願いいたします

【56578】Re:条件に応じて指定範囲の背景色を変え...
回答  ひげくま  - 08/6/23(月) 14:03 -

引用なし
パスワード
   VBAマクロじゃなくても、条件付き書式でできますよ。

【56579】Re:条件に応じて指定範囲の背景色を変え...
質問  blackjet E-MAIL  - 08/6/23(月) 14:08 -

引用なし
パスワード
   ひげくま さんありがとうございます

条件付き書式ではなくVBAでは作成できませんか?

【56581】Re:条件に応じて指定範囲の背景色を変え...
回答  ひげくま  - 08/6/23(月) 14:24 -

引用なし
パスワード
   VBAでもできますよ。

ただ、条件付き書式でできるものをわざわざVBAでやらなくても・・・と思っています。

ちなみに、条件付き書式でのやり方はご存知なのでしょうか?

【56582】Re:条件に応じて指定範囲の背景色を変え...
質問  blackjet E-MAIL  - 08/6/23(月) 15:11 -

引用なし
パスワード
   ひげくまさん たびたびのご回答ありがとうございます。

条件付き書式の設定等は理解しています。

今回はVBAを理解したく勉強を兼ねてVBAでの作成をしております。

VBAで教えていただけましたらよろしくお願いいたします


面倒かけてすいません。

【56583】Re:条件に応じて指定範囲の背景色を変え...
発言  ひげくま  - 08/6/23(月) 15:17 -

引用なし
パスワード
   >今回はVBAを理解したく勉強を兼ねてVBAでの作成をしております。

なるほど。

では、どこまで解っていて、何が解らないのかを提示してもらえますか?

【56584】Re:条件に応じて指定範囲の背景色を変え...
質問  blackjet E-MAIL  - 08/6/23(月) 15:30 -

引用なし
パスワード
   ひげくまさん ありがとうございます

単独セルの条件上での背景色の設定は

Select Case Range("A1").Value
  Case Is = "あ"
  Range("A1").Interior.ColorIndex = 34
  Case Is = "い"
  Range("A1").Interior.ColorIndex = 36
  Case Is = "う"
  Range("A1").Interior.ColorIndex = 38
  Case Is = "え"
  Range("A1").Interior.ColorIndex = 45
  Case Else
  Range("A1").Interior.ColorIndex = 35
  End Select

こんな感じでやってみましたが、背景色を行の範囲内で(たとえばA1からA3)
で変更して この条件をほかの行にも繰り返すことができません

ホント初心者ですいません。よろしくお願いいたします

【56585】Re:条件に応じて指定範囲の背景色を変え...
発言  neptune  - 08/6/23(月) 15:55 -

引用なし
パスワード
   ▼blackjet さん:
横から失礼

ヒント+サンプル
Sub t()
Dim target As Range
Dim buf As Range

  Set target = Worksheets("Sheet1").Range("A2:D2")
  
  For Each buf In target
    'ここに今作っている条件選択、処理を入れてみて下さい。
    '勿論わずかな改造は必要
  Next
  Set target = Nothing
End Sub

判らなければHelpの
Visual Basic プログラミングのヒント
  For Each...Next ステートメントの使い方
を見て下さい。

【56586】Re:条件に応じて指定範囲の背景色を変え...
回答  ひげくま  - 08/6/23(月) 16:00 -

引用なし
パスワード
   とりあえずは、どんなに不恰好でも、やりたいことを実現できるコードを書けるようになりましょうか。

A1からA3まで色を塗るのであれば、

  Range("A1").Interior.ColorIndex = 34
  Range("A2").Interior.ColorIndex = 34
  Range("A3").Interior.ColorIndex = 34

で大丈夫です。
もちろん、このようなコードを書く人は稀ですが、何もできないよりはましです。

実際にA1からA3の範囲の背景色を変更して、それを「ツール − マクロ − 新しいマクロの記録」でマクロに記録してみましょう。
上記コードよりまともな書き方が解りますよ。

> この条件をほかの行にも繰り返すことができません

繰り返す、の真意が良く理解できていませんが、不恰好でも良ければ、

Select Case Range("A1").Value


Select Case Range("A2").Value


Select Case Range("A3").Value



で良いんじゃないでしょうか。

Select構文を使えるくらいであれば、If構文、For構文、Do Loop構文等もお解かりですよね?
何に困っているのかがよく解りません・・・

【56587】Re:条件に応じて指定範囲の背景色を変え...
発言  Yuki  - 08/6/23(月) 16:08 -

引用なし
パスワード
   ▼blackjet さん:
>単独セルの条件上での背景色の設定は
>
>Select Case Range("A1").Value
>  Case Is = "あ"
>  Range("A1").Interior.ColorIndex = 34
>  Case Is = "い"
>  Range("A1").Interior.ColorIndex = 36
>  Case Is = "う"
>  Range("A1").Interior.ColorIndex = 38
>  Case Is = "え"
>  Range("A1").Interior.ColorIndex = 45
>  Case Else
>  Range("A1").Interior.ColorIndex = 35
>  End Select
>
>こんな感じでやってみましたが、背景色を行の範囲内で(たとえばA1からA3)
>で変更して この条件をほかの行にも繰り返すことができません

こういうことがしたいの?
シートモジュールに
Private Sub Worksheet_Change(ByVal Target As Range)
  
  If Not Intersect(Target, Columns(1)) Is Nothing Then
    Select Case Target.Value
      Case "あ"
        Target.Resize(, 4).Interior.ColorIndex = 5
      Case "い"
        Target.Resize(, 4).Interior.ColorIndex = 3
      Case Else
    End Select
  End If
End Sub

【56588】Re:条件に応じて指定範囲の背景色を変え...
質問  blackjet E-MAIL  - 08/6/23(月) 16:13 -

引用なし
パスワード
   ひげくまさんありがとうございます。
範囲の背景色について納得です。ありがとうございました

繰り返してでの
>Select Case Range("A1").Value
>:
>:
>Select Case Range("A2").Value
>:
>:
>Select Case Range("A3").Value
>:
>:

この形では私もできるんですが
表の項目でたくさんの行がある場合に
永遠コードを書かなくてはできないんでしょうか?

【56589】Re:条件に応じて指定範囲の背景色を変え...
お礼  blackjet E-MAIL  - 08/6/23(月) 16:16 -

引用なし
パスワード
   Yukiさんありがとうございます

コードが見てわからないのでやってみます。

ありがとうございました。

【56590】Re:条件に応じて指定範囲の背景色を変え...
回答  ひげくま  - 08/6/23(月) 16:19 -

引用なし
パスワード
   Range("A1") は Cells(1, 1) と書くこともできます。
Range("A2") は Cells(2, 1) です。縦と横の順番が逆なので、最初は混乱するかもしれませんが。

Cells(n, 1) として、For構文などで n の値を変えていくと、永遠コードを書く必要はなくなります。

【56591】Re:条件に応じて指定範囲の背景色を変え...
お礼  blackjet E-MAIL  - 08/6/23(月) 16:20 -

引用なし
パスワード
   neptune さん ありがとうございます。

参考にさせていただきます。
感謝です。

【56592】Re:条件に応じて指定範囲の背景色を変え...
お礼  blackjet E-MAIL  - 08/6/23(月) 16:23 -

引用なし
パスワード
   ひげくまさん 何度も何度もありがとうございます


いろいろありがとうございました

ホントにありがとうございました。

【56593】Re:条件に応じて指定範囲の背景色を変え...
回答  ひげくま  - 08/6/23(月) 16:30 -

引用なし
パスワード
   >Range("A1") は Cells(1, 1) と書くこともできます。
>Cells(n, 1) として、For構文などで n の値を変えていくと、永遠コードを書く必要はなくなります。

追記。
Range("A" & n) と書いてループすることもできます。
Cellsに慣れていないのであれば、こっちのほうが感覚的に解りやすいかも?

【56594】Re:条件に応じて指定範囲の背景色を変え...
質問  blackjet E-MAIL  - 08/6/23(月) 16:36 -

引用なし
パスワード
   Yuki さん ありがとうございました

こんな感じにしたかったです

あと一つ教えてほしいんですが

範囲をターゲットの前から後ろまでにしたいときは
Target.Resize(, 4) をどう直したらいいんですか?

【56595】Re:条件に応じて指定範囲の背景色を変え...
発言  Yuki  - 08/6/23(月) 16:47 -

引用なし
パスワード
   ▼blackjet さん:
>範囲をターゲットの前から後ろまでにしたいときは
>Target.Resize(, 4) をどう直したらいいんですか?

前から後ろまでにしたいってどのようなことでしょうか。
例えば B列にカーソルがあってA列からC列みたいなことですか?
それでしたら OffSetを利用して
               _________<- B列
  If Not Intersect(Target, Columns(2)) Is Nothing Then
    Select Case Target.Value
      Case "あ"
        Target.Offset(, -1).Resize(, 3).Interior.ColorIndex = 5
      Case "い"
        Target.Offset(, -1).Resize(, 3).Interior.ColorIndex = 3
      Case Else
    End Select
  End If

【56596】Re:条件に応じて指定範囲の背景色を変え...
お礼  blackjet E-MAIL  - 08/6/23(月) 16:57 -

引用なし
パスワード
   Yukiさん ありがとうございました

大変勉強になりました。
感謝感謝です。

【56599】Re:条件に応じて指定範囲の背景色を変え...
お礼  blackjet E-MAIL  - 08/6/23(月) 17:38 -

引用なし
パスワード
   ひげくまさん ありがとうございました

とても参考になりました。

感謝してます。

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