• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAに付いて質問します。)

Excel VBAで決まった範囲のセルに色を付ける方法

end-uの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

>決まった範囲内とは、セルの横に14マス縦に6マスの合計84個のマスのセルがあります。 これが具体的にはどの範囲なのでしょう。 例えばM2セルの右14×6なのでしょうか?(N2:AA7?) そこが不明なので、取り敢えずアクティブセルを起点として考えてみます。 M2セルをアクティブにして実行。 Sub try()   Const y = 6 'タテ   Const x = 14 'ヨコ   Dim r As Long   Dim c As Long   Dim i As Long      With ActiveCell     'アクティブセルを起点にするから限界域設定     If .Row > (Rows.Count - y + 1) Or _       .Column > (Columns.Count - x) Then Exit Sub       '起点から右1オフセット、タテy、ヨコx に対して処理       .Offset(, 1).Resize(y, x).Interior.ColorIndex = xlNone       c = x       Do Until .Value <= i         .Offset(r, c).Interior.ColorIndex = 1         If c = 1 Then           c = x           r = r + 1           If r >= y Then Exit Do         Else           c = c - 1         End If         i = i + 1       Loop   End With End Sub もう一つお遊びで Sub try_2()   Const y = 6 'タテ   Const x = 14 'ヨコ   Dim s As String   Dim r As String   Dim c As String   With ActiveCell     If .Row > (Rows.Count - y + 1) Or _       .Column > (Columns.Count - x) Then Exit Sub     s = .Address     r = "(Row()-Row(" & s & "))*" & x     c = x & "-COLUMN()+COLUMN(" & s & ")+1"     '条件付き書式設定     With .Offset(, 1).Resize(y, x).FormatConditions       .Delete       '"=$M$2 >= (ROW()-ROW($M$2))*14 + 14-COLUMN()+COLUMN($M$2)+1"みたいな式       .Add(Type:=xlExpression, _          Formula1:="=" & s & ">=" & r & "+" & c _          ).Interior.ColorIndex = 1     End With   End With End Sub 条件付き書式なので手動でもできたりします。 VBAの勉強にはならないでしょうけど。

awmori
質問者

お礼

ご回答ありがとうございます。見ただけで・・・凄すぎて、なんて言ったら良いか分からいなですが・・・凄いですの一言です。アクティブセルじゃなくて例えば・・・B4を起点とする場合は、Cells(2,4)としてもダメだったんですが、どの様にしたら良いでしょうか?

関連するQ&A

  • エクセルでVBAを使うのかと思うのですが・・・

    エクセルである商品の一覧があります。 それぞれの数量合計を求めたいのですが ひとつの商品が複数行にわたって入力されており その合計を出したいのです。  ABCDEF 1 (1)  5 2 (1)  2 3 (1)  4 4 (2)  3   5 (2)  1 6 (2)  8 7 (3)  9 8 (4)  7 9 (4)  7 上記の表で(1)が合計何個、(2)が合計何個といった感じです。Eは個数です。 (1)は5+2+4=11なので別シートの商品名のみの一覧の(1)の横へ11と入力したいのです。 商品数が数百あり、行も数千あるため自動計算したいと思っています。 ちなみに今は行3の下に行の挿入を行い、セル1E~3Eまでを合計し、別のシートの商品一覧にC&P(値のみ)しています。 これではいつまでかかるか気が遠くなってきます。 VBAの出来る方よろしくお願いします。

  • エクセルで文字数を数えたいのですが

    よろしくお願いします。 エクセルでたとえば A1とB1のセルに 1,2,3,4,5,10 と入力されているとします。 ここから 1又は1,という文字数の合計を 抽出したいのですが 適切な関数が見当たらず 組合せもわかりません。  この場合 範囲はA1:A2 で 2(個)という 数値を欲しいのですが  セルの数や 左から何個目なのか ではなく 文字の合計数を 知りたいのですが。  文字の置換や検索みたいに 見つけて その個数を知りたいのですが   どなたかお願いいたします。  応用編で漢字の数や ひらがなの数(個数)を 1セルの中から又は多数のセル範囲から  指定文字の合計個数を抽出したいなど考えています。 初心者の為申し訳ありません。  ビジュアルベーシック?マクロ?アドイン?な状態です。 よろしくお願いいたします。 エクセル2003です。

  • エクセル2013で画像添付したのを大量コピペしたい

    靴のカタログを作っています 1マスの中に、靴の写真と型番、色番を入れたものが大量に必要です 1マスとはいえ、実際はA1からE8位までのセルで作られています セルA1は縦27、横60、セルB1は縦27、横30というように各々のセルの幅は違いますが、AからEまでとFからJまでのセルは、同じ比率で作っており、A4サイズの紙に全部で横6、縦4の24型分のマスがあります セルの結合などはしていません ア1、whiteの絵型が20マス、イ2、blackの絵型が8マス というように必要なので、1マスに写真を挿入し、品番と色をセルに入力したのをア1ならば19個他のマすにコピペ、次にイ2のマスも作り、7個他のマスにコピペをしたのですが、最初に作ったマスとコピペをしたマスの写真のサイズが変ってしまいます 写真のサイズは図の書式設定のサイズでは同じになっているのに、印刷プレビューで見るとコピペした方が大きくなってしまいます 実際印刷しても、あきらかに大きさが違ってしまいます このような作業を効率よくやる方法を教えてください わかり辛い説明で申し訳ないですが、明日には何とか終わらせたいので、宜しくお願いします

  • 空白のセルの場合は同じ文字を入力するVBA

    (1)セルL5・L6・L23・L24・L25があります。 上記で述べたセル範囲の文字が空白表示の場合、上記範囲の何処かに文字を入力したら、入力した文字と一緒の文字が自動で入力させます。(例えばL24に「1」と入力した場合はL5・L6・L24・L25に「1」と自動で入力) そして上記で述べたセル範囲の何処か1つでも文字が入っていると、文字が自動で入力されない(例えばL5に「3」と入力されている状態でL25に「8」と入力してもL6・L23・L24の文字は何も変化しない)VBAはどの様にすれば良いでしょうか? (2)セルM5・M6・M23・M24・M25があります。 上記で述べたセル範囲の文字が空白表示の場合、上記範囲の何処かに文字を入力したら、入力した文字と一緒の文字が自動で入力させます。(例えばM24に「1」と入力した場合はM5・M6・M24・M25に「1」と自動で入力) そして上記で述べたセル範囲の何処か1つでも文字が入っていると、文字が自動で入力されない(例えばM5に「3」と入力されている状態でM25に「8」と入力してもM6・M23・M24の文字は何も変化しない)VBAはどの様にすれば良いでしょうか? (3)セルL8~L10の範囲があります。 上記で述べたセル範囲の文字が空白表示の場合、上記範囲の何処かに文字を入力したら、文字が自動で入力させます。(例えばL9に「1」と入力した場合はL8・L10に「1」と自動で入力) 上記で述べたセル範囲の何処かに既に文字が入っていると、文字が自動で入力されない(例えばL10に「3」と入力されている状態でL8に「8」と入力してもL9の文字は何も変化しない)VBAはどの様にすれば良いでしょうか?

  • VBAのLEN関数

    VBAのLEN関数で1つのセルではなく横一列の範囲を指定して、それらのセルに入っている文字数の合計を取得する方法はありますか? また文字数を取得する際、全角と半角が混じっている可能性があるのですが、 半角で文字数を取得することはできるでしょうか? 何がしたいかといいますと、横一列に並んでいる複数セルの値を 別のセルに入力規則として入力させます。 その際、エクセルの仕様的に合計の文字数が半角255文字を超えないかチェックしたいのです。

  • EXCELの関数

    A10セルからA20セルまでの範囲でXを入力し、さらに、C10セルからC20セルまでの範囲である任意の金額(たとえば¥10000など)を入力した時のみの合計個数をD1セルに表示させたいのですが、関数を教えてください。よろしくお願いします。

  • Excel VBAでセルの色塗りについて

    VBAの初心者です。 Excel2003であるセル範囲のセルが色Aに塗られています。 今、このセル範囲でセルの値により5つの条件でセルの色を塗り分け て、条件に合致しないものは元の色のままにしたのですが、For Each とCASEステートメントを使ったVBAプログラムを教えて下さい。

  • Excel VBA に関する質問

    ExcelのVBA初心者です。 同じ列にランダムに配置された黄色のセルの「数」をカウントするために以下のようなコードを見つけました。確かにこれで列内の黄色のセルをカウントできるのですが、カウントした後でその列内の黄色のセルの数を変える(黄色であったセルを違う色にしたり、新たに黄色のセルにしたり)と、その結果が反映されません。どのようにコードを書きなおせば、随時列内の黄色のセルの個数が変わるたびにちゃんとカウントできるのでしょうか? Function color6(a As Range) Dim c As Range, cu As Long Application.Volatile For Each c In a If c.Interior.ColorIndex = 6 Then cu = cu + 1 Next color6 = cu End Function でやっています。

  • ExcelのVBAでお聞きします。

    初心者の為、分からないのですが・・・すいませんが宜しくお願いします。 シート上に特定の文字(有給)と入力した時に、その文字を数えるようにCOUNTIF関数を使って A1のセルに個数を表示させました。 同じように計画と入力した時に、その文字を数えるようにCOUNTIF関数を使って B1のセルに個数を表示させました。 ここからなんですがシート上に(有給)と入力した時に、メッセージボックスを使って 残りの有給は○○あります。と表示させたいのです。 同じように(計画)と入力した時に、メッセージボックスを使って 残りの計画は○○あります。と表示させたいです。 有給と計画の入力範囲ですが・・・E11:AD76です。 A1とB1には、COUNTIF関数で、残数を表示させています。 A1が有給の残数です。 B1が計画の残数です。 この様な、動作をさせる場合は、どの様なコードを作成すればよいのでしょうか? お手数ですが教えて頂けますでしょうか?

  • エクセルに張り付けている画像をVBAで指定の範囲を削除し、画像サイズを

    エクセルに張り付けている画像をVBAで指定の範囲を削除し、画像サイズを変更させることは可能でしょうか?似たように情報は見ましたが、どれも上手くいかずに困っています。具体的には、縦1000×横1200の画像があります。(上50、下80、左150、右200)を削除し、縦870×横850の画像にし、さらに90%にサイズをトリミングし、縦435×横425としたいのです。これをVBAで一発で行う方法があれば教えて下さい。また、同じシート、異なるシートに複数の画像があった場合、全てを同時にできましたらなお良いです。以上、宜しくお願いいたします。