[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでセルの塗りつぶし』(ゆかりん)
ご教示お願いします。
R列(R1からR40程度)を検索して、特定の文字"○"があった場合に
同行のセルを複数ピンク色に塗り潰したいのです。
例えばR8に"○",R24に"○"があった時にそれぞれA8〜J8,A24〜J24セルを
塗り潰したいのです。
過去ログに類似した質問もあるかもしれませんが、全くの初心者ですので
ピンポイントで教えて頂けると助かります。
どうぞ宜しくお願いいたします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
条件付き書式ではだめなのでしょうか? 条件付き書式ならA1セルからJ40セルを選択した状態で
ホームタブ → 条件付き書式 → 新しいルール → 「数式を使用して〜」を選択 =$R1="○" 書式をクリックして塗りつぶしタブから色を選択
でできますが。 (bi) 2018/12/28(金) 07:27
条件分岐の方はいろいろあるとおもいますが、一例を提示します。
ステップ実行して研究してみてください。
Sub Sample() Dim MyRNG As Range
For Each MyRNG In Range("R1", Cells(Rows.Count, "R").End(xlUp)) If MyRNG.Value Like "*○*" Then Debug.Print Range(Cells(MyRNG.Row, "A"), MyRNG).Address(0, 0) End If Next
End Sub
(もこな2) 2018/12/28(金) 07:35
こんな感じで。 Sub TEST() '変数rwをlong型で宣言(行番号格納用) Dim rw As Long 'R列の1行目からデータのある最下行まで繰り返す For rw = 1 To Range("R" & Rows.Count).End(xlUp).Row 'R列の値に「○」が含まれていたら If InStr(Range("R" & rw).Value, "○") > 0 Then 'A〜J列の同じ行をピンクに塗りつぶす Range(Range("A" & rw), Range("J" & rw)).Interior.Color = 16738047 End If Next rw End Sub (ろっくん) 2018/12/28(金) 08:37
参加! Sub pink() Dim f As Variant Range("A1:J40").Interior.Color = xlNone f = Evaluate("IF(R1:R40=""○"",""A""&ROW(1:40)&"":J""&ROW(1:40),CHAR(2))") f = Application.Transpose(f) f = Filter(f, Chr(2), False) f = Join(f, ",") If f <> "" Then Range(f).Interior.Color = RGB(234, 145, 152) End If End Sub (稲葉) 2018/12/28(金) 09:08
おはようございます。 記録しただけですけど、、、(^^; Sub てすと() Dim MyRng As Range Set MyRng = Range("A8:J24") With MyRng .Cells(1).Activate .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=$R8=""〇""" .FormatConditions(.FormatConditions.Count).SetFirstPriority With .FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = 0.399945066682943 End With End With Set MyRng = Nothing End Sub すみません ちょっと訂正しました。 何時も .Cells(1).Activate これを忘れるんですよねぇ どうにかして左上端を選択しておいてください。 (SoulMan) 2018/12/28(金) 09:59
Sub test() Dim i As Long With ThisWorkbook.Sheets("Sheet1") For i = 1 To .Cells(.Rows.Count, "R").End(xlUp).Row If .Cells(i, "R") Like "*○*" Then .Cells(i, "A").Resize(1, 10).Interior.Color = 13551615 End If Next i End With End Sub
(TAKA) 2018/12/28(金) 10:23
ゆかりん
(ゆかりん) 2018/12/29(土) 09:53
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Selectなどを見つけて
加筆したのですが全然上手くいきません。
どのモジュールに書くべきかもよくわかりません。
再度ご教示頂ければと思います。
(ゆかりん) 2018/12/30(日) 01:12
(もこな2) 2018/12/30(日) 02:27
おはようございます。 なんか年末であわただしくなってきましたね
ところで方法は、いくつかあるでしょうが >Sheets(Array("Sheet1", "Sheet2", "Sheet3")). なのでしたくないSheetもおありでしょうから 取り敢えず、ループしてあったら実行ってな感じにしましょうかね
で、今日は「簡単」のことを「ねこふんじゃった」っていうでしょ? これは何故かしってますぅ?(そんなんどないでもええから早よ本題にいかんかえ!おっさん!はい、すみません) 関西人特有の突込みがないと本題に入れないんですよね(^^;
で、これはその昔、柔道一直線(古いねぇ(笑))の近藤正臣扮する結城慎吾が一条直也の誘いを断った時に ピアノの上にぴょんと飛び乗って脚の指で ♪猫踏んじゃった を弾いたんですね (今からするとびっくりするようなシーンですね)
このことから、難しいことを難なくこなす=簡単=♪猫踏んじゃった となったんですね←これわたしの定説です。(笑)
なので、今回の事例は、こちらの学校の先生がたからすると、多分、「こんなの♪猫踏んじゃったやん」
だと思います。( ̄▽ ̄;)
ではでは、本日は妻に連れられてお買い物に大掃除にと不通になるかもしれませんが、 お許しくださいませ。
では、よいお年を迎えてください。
Sub てすと() Dim MyRng As Range Dim ws As Worksheet Dim MyAry As Variant Dim x As Variant MyAry = Array("Sheet1", "Sheet2", "Sheet3") For Each ws In ThisWorkbook.Worksheets x = Application.Match(ws.Name, MyAry, 0) If Not IsError(x) Then Set MyRng = ws.Range("A8:J24") With MyRng Application.Goto .Cells(1) .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=$R8=""〇""" .FormatConditions(.FormatConditions.Count).SetFirstPriority With .FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = 0.399945066682943 End With End With End If Next Set MyRng = Nothing Erase MyAry End Sub (SoulMan) 2018/12/30(日) 08:15
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Selectなどを見つけて 複数のシートがSheet1,Sheet2,Sheet3 なら
Sub Test()
Dim ws As Worksheet, c As Range
For Each ws In Sheets(Array("Sheet1", "Sheet2", "Sheet3")) For Each c In ws.Range("R1", ws.Cells(Rows.Count, "R").End(xlUp)) If InStr(c.Value, "○") Then ws.Cells(c.Row, "A").Resize(, 10).Interior.Color = vbMagenta End If Next c Next ws End Sub
(ピンク) 2018/12/30(日) 08:33
複数のシートがSheet1,Sheet2,Sheet3 なら Sub Test() Dim ws As Worksheet, c As Range
For Each ws In Sheets(Array("Sheet1", "Sheet2", "Sheet3")) For Each c In ws.Range("R1", ws.Cells(Rows.Count, "R").End(xlUp)) If InStr(c.Value, "○") Then ws.Cells(c.Row, "A").Resize(, 10).Interior.Color = vbMagenta End If Next c Next ws End Sub
(ピンク) 2018/12/30(日) 08:36
ほらね 猫ふんじゃっただったでしょ(笑) ピンクさん 勉強になります。 ありがとうございました。 (SoulMan) 2018/12/30(日) 08:43
そうですね、まずは教本でも買ってゆっくり基礎から
勉強してみます。また疑義が生じたらこちらのサイトで
お世話になりたいと思いますので、その時はまた宜しくお願いいたします。
(ゆかりん) 2018/12/30(日) 19:16
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.