• ベストアンサー

Excelのマクロ 指定した範囲のセルの処理方法

Excel2000のマクロを使って以下のマクロを作っています。 ■指定した範囲のセルの値が80以上だったら色をつける そこで質問なのですが、 range("","").select でセルの範囲を指定して、そこから選択したセルだけを対象に処理を実行するにはどうしたらいいのか方法がわかりません。どうすればいいでしょうか? どなたかご解答よろしくお願いします。

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

  • ベストアンサー
  • izmlz
  • ベストアンサー率55% (67/120)
回答No.3

↓はANo.1の改良版です。 Sub test() Dim Rng As Range Dim c As Range Set Rng = Range("B2:D10") 'セルの範囲を指定 For Each c In Rng If c.Value >= 80 Then c.Interior.ColorIndex = 20 Else c.Interior.ColorIndex = xlColorIndexNone End If Next End Sub >実行中にマウスで指定した範囲として処理をしたい場合 ↓のようになります。 Sub test2() Dim Rng As Range Dim c As Range On Error Resume Next Set Rng = Application.InputBox("範囲を指定してください", Type:=8) On Error GoTo 0 If Rng Is Nothing Then Exit Sub For Each c In Rng If c.Value >= 80 Then c.Interior.ColorIndex = 20 Else c.Interior.ColorIndex = xlColorIndexNone End If Next End Sub >For Each c In Rng >とはどんな感じの処理なのでしょうか?  セル範囲(Rng、すなわちRange("B2:D10") )内のセルすべてについて処理を行う、といった感じです。

その他の回答 (5)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.6

選択しているオブジェクトはSelectionでよいのですが、不特定の方にマクロを使わせることがあるなら、選択しているのがセルかどうか。セルの値が数値かどうかまでチェックした方がいいですよ。 こんな感じになります Sub Macro1() Dim r As Range  If TypeName(Selection) = "Range" Then   For Each r In Selection    If IsNumeric(r.Value) Then     If r.Value >= 80 Then      r.Interior.ColorIndex = 35     End If    End If   Next r  End If End Sub

bitter140307
質問者

お礼

ありがごうございます。回答を頂いた皆様、ありがとうございます。

  • kiki_s
  • ベストアンサー率59% (147/248)
回答No.5

>Excel実行中にマウスで指定した範囲として処理をしたい・・・ Selection.Addressで取得出来ます。 Hani = Selection.Address ただし、絶対参照で返って来ます。 A1からB10が選択されていると、Hani =「$A$1:$B$10」 ただ、この関数は律儀なところがあり、 マウスでセルを範囲する時、上から下と下から上で参照値が変わります。 A1からB10で「$A$1:$B$10」 B10からA1で「$B$10:$A$1」 つまり、選択した順番で返って来ます。 もちろん離れた複数セルの取得もできます。 私事ですが、離れた複数セルの処理で苦労しました。 結局、ものすごい力業で処理しています(^^;; >For Each c In Rng まぁ、すでに回答は出ていますが、 Rngを配列の要素としてステートメントを実行します。

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.4

> Excel実行中にマウスで指定した範囲として処理をしたい 今ひとつ状況が分かりませんが、予め範囲を指定してからマクロを実行ということであれば Range("A1:A10")などののかわりに Selection を利用します。 For Each C in Selection Debug.Print C.Value Next とすると現在選択されている範囲内のセルを一つずつ取り出し、イミディエイトウィンドウにセルに入力されている値を出力します。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

Dim r As Range Set r = Application.InputBox("セル範囲指定", Type:=8) MsgBox r.Address 例えばですけどInputBox メソッドの例

  • izmlz
  • ベストアンサー率55% (67/120)
回答No.1

条件付き書式で実現可能なことですが、マクロでということでしたら、↓のようになるかと思います。 Sub test()  Dim Rng As Range  Dim c As Range  Set Rng = Range("B2:D10") 'セルの範囲を指定  For Each c In Rng   If c.Value >= 80 Then    c.Interior.ColorIndex = 20   End If  Next End Sub

参考URL:
http://www2.odn.ne.jp/excel/waza/cformat.html
bitter140307
質問者

補足

ご解答ありがとうございます。 ひとつお聞きしたいのですが、たとえばマクロであらかじめ範囲をしているのではなく、Excel実行中にマウスで指定した範囲として処理をしたい場合はどうしたらいいのでしょうか?よろしければご解答お願い致します。 また、 For Each c In Rng とはどんな感じの処理なのでしょうか?

関連するQ&A

  • マクロのセルの範囲指定

    こんにちは。マクロ初心者です。 今エクセルの業務でマクロを作成しようとしているのですが マクロ実行時にセルの範囲でマウスでセルを選んだところから マクロを実行させたいのですが(マクロを実行する際毎回場所が変わるので)そのようなセル指定方法はあったりしますでしょうか? 項目に関しては(BW4~BX4)は固定です。 関数に関しては(BW10~BW10)は月によっては BW20になったりと行が変わります。 Range("BW10").Selectのカッコ内を毎回変更すればいいのですが 項目が20以上ある為面倒です。 なにか良い方法がありますでしょうか? よろしくお願いいたします。 Range("BW4").Select ActiveCell.FormulaR1C1 = "商談明細NO桁数" Range("BX4").Select ActiveCell.FormulaR1C1 = "商談明細NO桁数2" Range("BW10").Select ActiveCell.FormulaR1C1 = "=CONCATENATE(0,RC[-70])" Range("BX10").Select   ActiveCell.FormulaR1C1 = "=RIGHTB(RC[-1],2)"

  • エクセルのマクロで範囲指定をセルに番号を入れて、範囲指定したセルの字の

    エクセルのマクロで範囲指定をセルに番号を入れて、範囲指定したセルの字の色を白にして消したいのですが、番号を入れるマクロがわかりません。マクロに記録でA2からB12までのセル内の字の色を白 にする方法は Sub 字を消す() ' ' 字を消す Macro ' ' Range("A2:B11").Select With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With End SubでできるのですがD3に開始番号、E3に終了番号を指定する方法がわかりません。ご教授お願いします

  • エクセルのマクロのセルの範囲指定

    エクセルのマクロで、うまくセルの範囲を指定できません。 例えば、 Range(Cells(5.6), Cells(8, 7)) = "AAA" と、指定した時は、F5:G8のセルにAAAという文字を代入するつもりで書いています。 ところが、マクロを実行すると、F1:G8まで、AAAの文字が代入されます。 どうしてでしょうか。 宜しくお願い致します。

  • マクロでのセルの選択範囲について

    マクロのセル範囲の指定でうまくできなくて困っています。 マクロでB3:B5を選択するように、コードを次のように Range(Cells(3.2), Cells(5, 2)).Select 書くと、B1:C5を選択します。 試しに、 Cells(3, 2).Select と書くと、B3を選択します。 次に、マクロを Cells(5, 2).Select と書くと、B5を選択します。 どうしてでしょうか。 宜しくお願い致します。

  • 【EXCEL VBA】定数で与えられたセルを使いセル範囲を選択する方法

    【EXCEL VBA】定数で与えられたセルを使いセル範囲を選択する方法 VBA初心者です。よろしくお願いします。 実行したい処理は決めたのですが、Excelのレイアウトが未定です。 そこで、レイアウト変更を考慮し、処理対象セルを定数で与えています。 例えば、 Range("B2:B8").Select は、 Const IchI As String = "B2" Range(Range(IchI), Range(IchI).Offset(6, 0)).Select ・・・(1) としています。(これ自体おかしいのかもしれません。。。) しかし複数のセル範囲 例えば、 Range("B2:B8,F2:F8").Select の場合、どうしたらいいのかわかりません。 (1)自体おかしいのかもしれません。   良い方法があれば教えてください。 よろしくお願いします。

  • エクセルのマクロ 選択したセルを指定した範囲へ値貼

    お世話になります。 自動記録したものをどのように修正したら、実行時に選択しているセルの値を、3行下、1つ左のセルから8行目までに貼り付けることができるよう書き変えられますでしょうか。 初心者で何に手を付けて良いのか分からず。どなたかご教示いただけませんでしょうか。どうぞよろしくお願い致します。 Sub 選択したセルを指定した範囲へ値貼り付け() ' ' Macro1 Macro ' ' Range("I9").Select Selection.Copy Range("H12:H19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub

  • 範囲指定したセルを1つずつ飛ばす方法

    エクセルで、例えば Range("A5:A30")と、範囲指定した場合、この間で 1つ置きにセルを把握させたい場合(A5→A7→A9。。。) どのような記述になるでしょうか? マクロを実行すると Range("A1:A30,A3,A5,A7,A9。。。").Selectとなって しまい、結局は1つずつ指定するしかないさそうなのです が、広範囲になると、これでは追いつきませんし。。。 for文のstepなどの記述の仕方ってできないんでしょうか? よろしくお願いします。

  • Excelのマクロで範囲指定したい

    マクロで範囲指定したいのですがうまくできません。この表示はどこがおかしいのでしょうか? Range(("a" & (GyoNO - 1): Range("b"&(GgyoNo-1)).Select

  • エクセル VBA 範囲指定方法

    エクセルVBA初心者です。 以下の範囲指定について教えてください。 一つの表のK列の一番下のセル(不定)を選択→Range("K65536").End(xlUp).Select その選択されたセルからA3(固定)まで範囲を選択したいのですが、不定セル:固定セル の範囲指定方法が分かりません。 よろしくお願いいたします。

  • Excelマクロ:変数を使って範囲を指定してコピーするには?

    マクロ勉強中の初心者です。(OS:WindowsXP Excel2002) データの範囲を指定してコピーしたいと思っています。 cellsを使って、【変数を用いた】 記述の仕方を、教えて下さい。 変数を用いない場合は、以下のようなマクロで正常に動作しました。 【変数を用いない場合】   Sheets("Sheet2").Select Range("F3:K3").Select Selection.Copy Sheets("Sheet1").Select Range("C3").Select ActiveSheet.Paste

専門家に質問してみよう