• ベストアンサー

Excel2007VBAの質問です

Excel2007のマクロを利用してセルの色を変更しようと思います Range("茶色範囲").Interior.ColorIndex = 9 としてA2セルからA10セルまた、A2セルからG2セルまでを一度に変更したい場合 茶色範囲というのを、どこかに 指定する必要があるのですが、 これは一般的にどこに指定すればいいでしょうか? 富士通の緑の本がわかりやすいので勉強しているのですが、 その範囲指定がどこで行っているのかがわからず質問しました。 ご存知の方いらっしゃいましたら、教えてください。 よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! >A2セルからA10セルまた、A2セルからG2セルまでを一度に変更したい場合・・・ 名前定義しての方法が出ていますので、 A2~A10 を 範囲1 と名前定義 A2~G2 を 範囲2 と名前定義した場合は Sub 名前定義() Range("範囲1").Interior.ColorIndex = 9 '★名前定義されている範囲をダブルクォーテーションでくくる。 Range("範囲2").Interior.ColorIndex = 9 End Sub とか Sub Sample1() Union(Range("範囲1"), Range("範囲2")).Interior.ColorIndex = 9 End Sub といった方法で「範囲1」「範囲2」の範囲に色が付きます。 他の方法としては、コードで直接範囲指定する方法もあります。 Sub コードで範囲指定() Dim myRng1 As Range, myRng2 As Range '★範囲の変数を宣言 Set myRng1 = Range("A2:A10") Set myRng2 = Range("A2:G2") myRng1.Interior.ColorIndex = 6 '★←黄色 myRng2.Interior.ColorIndex = 6 End Sub または Sub Sample2() Dim myRng1 As Range, myRng2 As Range Set myRng1 = Range("A2:A10") Set myRng2 = Range("A2:G2") Union(myRng1, myRng2).Interior.ColorIndex = 6 End Sub といった具合です。 もっと簡単にやろうとすれば Sub Sample3() Range("A2:A10,B2:G2").Interior.ColorIndex = 3 '★赤にしています End Sub だけでも大丈夫です。 ※ 名前定義の場合、列・行を削除した場合その数だけ範囲が少なくなります。 コードで範囲指定している場合は列・行を削除や挿入してもその範囲のままです。m(_ _)m

superturbo
質問者

お礼

回答いただきどうもありがとうございます。 名前の定義でうまくいきました。 教えていただいたプログラムの書き方も理解できまして、勉強になりました。 とても参考になりました

その他の回答 (3)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.3

名前の定義で付けた名前をマクロでも使うことができます。

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-name.html
superturbo
質問者

お礼

回答いただきどうもありがとうございます。 名前の定義でうまくいきました。 とても参考になりました

  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

やり方は色々あると思いますが 選択している範囲の色を変更したいのなら Selection.Interior.ColorIndex = 9 A2からA10の場合 Range("A2:A10").Interior.ColorIndex = 9 A2からG2の場合 Range("A2:G2").Interior.ColorIndex = 9 名前を定義した場合(茶色範囲) Range("茶色範囲").Interior.ColorIndex = 9 など。

superturbo
質問者

お礼

回答どうもありがとうございます 回答いただいた内容にあります「名前を定義した」 というのが近いと思っているのですが、 もうすでに練習問題としてあるマクロを見ても書いて無いようなのですが、 マクロ(module1)以外に範囲指定する方法があるのでしょうか?

回答No.1

Excelのマクロは組んだことがない門外漢ですが・・・。 Sub Macro1()   Range("B5:H5").Interior.ColorIndex = 9 End Sub でOKなようですよ。 【回答に至った経緯】 マクロを記録させて、それを編集にて参照し、もって書き方を知りました。

superturbo
質問者

お礼

回答いただきどうもありがとうございました。 また調べてもらってありがとうございます。 参考になりました。

関連するQ&A

  • VBA セルの色を変更する

    VBA(エクセル2007使用)で、セルの背景色を変更する場合についての質問です。 マクロを実行する度に、セルの背景色を変更するマクロを作成しました。 オレンジ→水色→緑→灰色→無色  という風に変わっていくところまでは できたのですが、これだとマクロを実行するのにセルの状態が無色か、指定した カラーコードで塗りつぶされていないと実行できません。 下記、コードの一番最初の Case で ”背景色がどんな色の場合でも”という条件に したいのですが、どのように記載したらわからずにいます。。。 ---------------------------- Sub 色チェンジ() n0 = ActiveCell.Interior.ColorIndex Select Case n0 Case xlNone   ’ここを”どんな色の場合でも、、、という条件にしたいです。。” Selection.Interior.ColorIndex = 40 Case 40 Selection.Interior.ColorIndex = 34 Case 34 Selection.Interior.ColorIndex = 35 Case 35 Selection.Interior.ColorIndex = 15 Case 15 Selection.Interior.ColorIndex = xlNone End Select End Sub -----------------------------------

  • 色の付いているセルを探す。(excel)

    range("a1:a20")の中で、色(赤)が付いているセルを探すのに、 findは使えませんか。 マニュアルのサンプルでは、whatのところは文字列の指定しか見つかりませんでした。 「Interior.ColorIndex = 3」のように使いたいのですが。 宜しくお願いします。

  • エクセルVBA 選択した値でセルの色を変える方法

    エクセルのVBAです。 指定されたセルの値をプルダウンで選択し、入力(選択)された値によって同じ列の指定した範囲に色を付ける、という内容です。 これを、一つの列のみで行う場合は、以下のコードでOKでした。 わからないのは、列の範囲が5~40まであり、それぞれ値を選択した時にそのセルと同じ列の指定範囲に色をつけることです。 ちなみに、条件付き書式は、すでに条件がいくつかついているため 使用できないという前提でお願いします) ちょっと説明がわかりづらいですが、おわかりになる方いらっしゃいましたら教えてください。よろしくお願いします!! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Private Sub Worksheet_Change(ByVal Target As Range) a = Cells(33, 5).Value Select Case a Case "A" Range("E6:E31").Interior.ColorIndex = 6 Case "B" Range("E6:E17").Interior.ColorIndex = 8 Range("E18:E31").Interior.ColorIndex = 2 Case "C" Range("E18:E31").Interior.ColorIndex = 8 Range("E6:E17").Interior.ColorIndex = 2 Case "" Range("E6:E31").Interior.ColorIndex = 2 End Select End Sub ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Cells(33, 5)で A を選択した時は、E6:E31を黄色で。 B を選択した時は、E6:E17を水色かつE18:E31を白 C を選択した時は、E18:E31を水色かつE6:E17を白 値なしを選択した時は、色なし(白)

  • EXCELで4色の色をつけるVBA(既存)を最後のシートまで実行するには?

    エクセルのVBAで質問です。 現在、下記のVBAにて、エクセルに4色の色をつけています。 内容 ・処理範囲内(D5:AI50)の列の値が、 ・指定した行(4行目)の値から見て、 ・+5、+10、-5、-10の場合、それぞれ指定した色をつけています ・ただしC列の値が30未満の行は色付けなし 現状では、このマクロはアクティブシートのみで使えるため、 100シートあれば、それぞれのシートにおいて そのつどマクロを実行しています。 これを、一度の実行で最終シートまで実行できるようにしたいのです。 VBA初心者のため、見よう見まねでループを試してみたものの、 どうもうまく動きませんでした。 なにとぞご教授のほど、お願いいます。 ●以下、現在使用しているVBA Sub 条件付4色の標本数1() Dim 処理範囲 As Range Dim 先頭の行番号 As Long Dim 全体の行数 As Long Dim 各セル As Range Dim 差分 As Single Dim 標本数 As Single Set 処理範囲 = Range("D5:AI50") For Each 各セル In 処理範囲 標本数 = Cells(各セル.Row, "C").Value If 標本数 >= 30 Then 差分 = 各セル.Value - Cells(4, 各セル.Column).Value    Select Case 差分 Case Is <= -10 各セル.Interior.ColorIndex = 37 'ペールブルー 各セル.Font.ColorIndex = 1 Case Is <= -5 各セル.Interior.ColorIndex = 34 '薄い水色 各セル.Font.ColorIndex = 1 Case Is >= 10 各セル.Interior.ColorIndex = 6 '黄37 各セル.Font.ColorIndex = 1 Case Is >= 5 各セル.Interior.ColorIndex = 19 '薄い黄 各セル.Font.ColorIndex = 1 Case Else 各セル.Interior.ColorIndex = xlNone '無色 End Select End If Next End Sub

  • VBAでセルの色を変更するには

    ある範囲のあるセルの色のみ一気に変更したいのですが、自力で調べた結果はセルに色を付ける以下の記述までしか分かりませんでした。 例えば、現在のベージュ(40)を赤(3)に変更するにはどう記述すればよいのでしょうか? 宜しくお願いします。 Sub Macro1() Range("A1:N180").Select With Selection.Interior .ColorIndex = 40 .PatternColorIndex = xlAutomatic End With End Sub

  • 度々エクセルマクロで質問です

    前回は皆様有り難うございました。 度々で申し訳ございません。 前回、エクセルマクロで、仮に columns("C:C").interior.colorindex = xlnone cnt = 1 temp = range("a1").value cells(cnt,3).resize(temp).interior.colorindex = 3 cnt = cnt + temp temp = range("a2").value cells(cnt,3).resize・・・・・ というマクロを教えて頂きました。 この状態ではA列の数字の分だけ、C列のセルを色分け できる訳ですが、この色分けと同じ範囲のセルをD・E 列にて罫線を引きたいのですが(範囲内すべてのセルの下線及びE列のセルの右側に縦線)このマクロにどのような マクロを追加すべきなのでしょうか? 変な質問ですみません。 初心者なので教えて下さい。

  • エクセルVBAについて

    エクセルVBAについて 下記のようなマクロで、選択したセルの、列の背景色の切り替えを行いたいと思っています。 が、写真のように、塗りつぶしを行いたいセルが結合しているところと、 そうでないところがあり、列全体に、うまく塗りつぶしができません。 '列の背景色を変更 Cells.Interior.ColorIndex = xlNone Dim i As Long i = Target.Column Columns(i).Interior.ColorIndex = 6   Columns(i + 1).Interior.ColorIndex = 6 また、選択するセルは、2行目で、2列が結合しています。 うまく、2列が結合しているセルにも、塗りつぶしを適用することは可能でしょうか? また、できれば列全体の塗りつぶしでなく、行の範囲も指定できればと思っています。 写真では、2列が結合していない部分のみ、塗りつぶしが適用されています。 表の構成上、結合しているセルとそうでないセルの変更ができないため、困っています。 どうぞ、よろしくお願いいたします。

  • VBA Excel2003 謎のエラー

    いろいろ検索してみたのですが、問題が解決できません。 エクセルのSheet1のA1からG16のセルの内容を一つずつ感知し、マイナスだったら赤、プラスだったら緑、それ以外だったら何もしないという処理にしたいです。 Private Sub Workbook_Open() ThisWorkbook.Sheets("Sheet1").Select ThisWorkbook.Sheets("Sheet1").Range("A1").Select Dim 英語 As Integer Dim 数字 As Integer Dim sheet1 As Worksheets sh1 = Worksheets("Sheet1") sh1.Activate 英語 = 1 数字 = 1 For 数字 = 1 To 16 For 英語 = 1 To 6 '選択位置が、マイナスだったら赤、プラスだったら緑、それ以外は無視 If Range(sh1.Cells(英語 & 数字)) < 0 Then Range(sh1.Cells(英語 & 数字)).Interior.ColorIndex = 7 ElseIf Range(sh1.Cells(英語 & 数字)) > 0 Then Range(sh1.Cells(英語 & 数字)).Interior.ColorIndex = 4 Else Range(sh1.Cells(英語 & 数字)).Interior.ColorIndex = 0 End If 英語 = 英語 + 1 Next 英語 数字 = 数字 + 1 Next 数字 End Sub

  • エクセルVBAのイベントで質問です。

    ある範囲のセルの色をダブルクリックにより変えていますが、 下の("D5:D50,F5:F50,K5:K50,M5:M50"))の範囲を例えばSheet1の A2以下に始めの範囲、B2以下に終りの範囲を下に書いていって、 対象とする範囲を可変にしたいのですが、どのようにすれば いいでしょうか。 例えば("D5:D50,F5:F50,K5:K50,M5:M50"))であれば A2に「D5」 B2に「D50」 A3に「F5」 B3に「F50」 などとセルにセル番地をいれておいて、コードを変えなくても シート上で範囲を変えていけるようにできないでしょうか。 やり方があれば教えてください。 よろしくお願いします。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim r As Range Set r = Intersect(Target, Range("D5:D50,F5:F50,K5:K50,M5:M50")) If r Is Nothing Then Exit Sub With r.Interior If .ColorIndex = xlNone Then .ColorIndex = 3 ElseIf .ColorIndex = 3 Then .ColorIndex = 4 ElseIf .ColorIndex = 4 Then .ColorIndex = xlNone End If End With Cancel = True End Sub

  • VBA 条件付き書式の書式(背景色)のみコピー

    エクセル2016のマクロで、別シートの条件付き書式の書式(背景色)のみコピーしてきたいです。 以下ではうまく動かすことができませんでした。 ws2.Range("A1:D10").DisplayFormat.Interior.ColorIndex = ws1.Range("A1:D10").DisplayFormat.Interior.ColorIndex 範囲の背景色のみコピー&ペーストという動作自体できないのでしょうか? また、for...nextで一セルずつ等他に方法があればお教えいただきたいです。 分かりづらい質問で申し訳ありません。。 質問の趣旨をおわかりいただけるでしょうか? 方法等調べましたがほしい情報が見当たらず、お知恵をお貸しください。 よろしくお願いいたします。

専門家に質問してみよう