• 締切済み

エクセルのセルの一部の色を変更したい

エクセル2000でマクロを作っていて質問です。 セルの一部を選択した状況から、選択した文字列だけ色を赤字に変えるというプログラムはどのように書けばよいでしょうか? ActiveCell.Characters(Start:=1, Length:=33).Font.colorindex = 9のSTARTとLENGTHを、現在選択している先頭と長さ、というように指定したいのですが。 ちなみに勉強の意味もあってプログラムを書いていますので、バーのボタン押したらいいじゃん、という冷静な意見はご勘弁を。

  • fuyu
  • お礼率69% (145/210)

みんなの回答

  • gt2530
  • ベストアンサー率38% (7/18)
回答No.1

こんにちは。 回答ではありませんが、私はこうして勉強しました。 分からない所は、まずマクロで記録し出来たPGMをVBAで見て理解する。 今作ったマクロのPGMを見ないで自分でPGM組んでみる。 なんて方法でも勉強にはなるんじゃないでしょうか?

fuyu
質問者

お礼

回答ありがとうございます。 残念ながらこれ以上回答がつきそうにないので、締め切らせていただきます。

関連するQ&A

  • Excel VBA で 一括書式設定(セル内の一部のみ)

    こんにちは。教えてください。 1つのセル内に、 あいうえお1か き! くけこ2 さしすせそ3たち。 つてと45.67? というように、いくつかのセル内改行を含み、文字数がばらばらのデータが入っています。そういうセルが、一行にいくつも並んでいます(途中に空白もあります)。 それらの1行目(上記の例で言うと、「あいうえお1か」)のみ、フォント赤色の書式設定を、マクロで行いたいのです。 そこで、以下のマクロを実行すると、選択セルがひとつだけのときは問題ないのですが、複数のセルを選択すると実行時エラー(型が一致しません)が出てしまいます。 Sub 一行目赤() With Selection.Characters(Start:=1, Length:=InStr(Selection.Value, Chr(10)) - 1).Font .ColorIndex = 3 End With End Sub 選択セルのすべてに対し、一括で書式設定できるようにするにはどうしたらよいでしょうか?ご回答よろしくお願いいたします。

  • Excel VBA で 一括書式設定(選択セルのみ)

    おはようございます。教えてください。 結合されたセル内に、 あいうえお1か き?! くけこ2 さしすせそ3たち。 つてとな45.67 というように、いくつかのセル内改行を含み、文字数がばらばらのデータが入っています。 それらの1行目(上記の例で言うと、「あいうえお1か」)のみフォント緑色、2行目はフォント青色、3行目以降はフォント黒色の書式設定を、選択セルすべてに対し、マクロで行いたいのです。 1行目だけなら以下のマクロでできたのですが、2行目以降の参照の仕方がわかりません。 Sub 一行目緑() For Each c In Selection With c.Characters(Start:=1, Length:=InStr(c.Value, Chr(10)) - 1).Font .ColorIndex = 10 End With Next End Sub ご回答よろしくお願いいたします。

  • VBAで、セルの一部の文字色を変更するプログラムで困っています

    ループ処理で、1つのセルに次のように1行ずつ追記するプログラムを作成しようとしています。 ■文字列1 ■文字列2 ■文字列3   : セル内で改行したいので、2行目以降はChr(10)でつないでいます。 「文字列」の箇所は黒字でいいのですが、「文字列」の内容によって、「■」の文字色を5色で色分けしたいです。 色は「文字列」の内容によって決まるので、あるときは、1行目の「■」は緑、2行目の「■」はピンク、…であっても、 またあるときは、1行目の「■」はピンク、2行目の「■」は青、…というように、可変です。 そこで、次のようなソースを書いたのですが、うまくいきません。  For i = 1 to 10   out_str = "■" & mojiretsu(i)   Cells(i, j).Select   outchar_start = Len(ActiveCell.Value)   If outchar_start = 0 Then     ActiveCell.Value = out_str   Else     ActiveCell.Value = ActiveCell.Value + Chr(10) + out_str   End If   ActiveCell.Characters(Start:=outchar_start + 1, Length:=1).Font.color _     = RGB(ReturnColor(mojiretsu(i), RR), _        ReturnColor(mojiretsu(i), GG), _        ReturnColor(mojiretsu(i), BB))   ActiveCell.Characters(Start:=outchar_start + 2).Font.color = RGB(0, 0, 0)  Next   ※ ReturnColor関数は、文字列の内容に応じて、RGBのコードを返す自作の関数です。 1回目のループ終了後は、「■」のみ色がつき、「文字列」は黒字という状態なのですが、 2回目以降のループが実行されると、セルのすべての文字に色が付いてしまいます。 (ActiveCell.Value = ActiveCell.Value + Chr(10) + out_str で上書きしているので、その時点で文字のプロパティが無効になってしまうのでしょうか??) ちなみに、上のソースでは、説明の便宜上、For文で10回ループさせていますが、 実際はテキストファイルを読込み、そのファイルの行数によって、1セルに書きだす行数が決まりますので、 何行出力させるかは、固定ではありません。 また、追記させるセルも1セルだけではなく、50セルくらいあるうちのどのセルに追記するかをその他の条件により判定しています。 セルの何文字目を何色にするかという情報を別に記憶しておいて、 最後に文字のプロパティを変更させることも考えたのですが、 上記のことを考慮すると、あまりスマートなやり方ではないのかなと思いました。 不慣れなためプロパティの考え方が間違っているだけかもしれませんが、 何かいい方法がありましたら、ご教示お願いします。

  • 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 -----------------------------------

  • エクセルでセルをクリアされたら、自動的にセルの色を変更したい

    エクセルで、セルの値がDeleteキーなどでクリアされた場合に、 自動的にセルの色がかわるようにしたいのですが、 何かよい方法はないでしょうか? セルの内容が変更された場合のフォントの色を変えるために、 Private Sub Worksheet_Change(ByVal Target As Range) Target.Font.ColorIndex = 3 End Sub というマクロは設定しています。 これだとクリアされた場合、わからないので。。。 よろしくお願いします。

  • エクセル同一セル内の指定文字数のみアンダーラインをひく

    例えばエクセル同一セル内で頭10文字のみアンダーラインをひいて、残りは引かないというようなものをASPより処理したいのですが、うまくいきません。。。 xlsSheetWrk.Range("A3").Characters(Start:=1, Length:=8).Font.Underline = xlUnderlineStyleSingle 上記のように記述しているのですが、エラーになります。 どうすればよいでしょうか?? よろしくお願いします。

  • エクセルVBAでセルの元の値の色を残したまま、新しく加えた文字列の色を変更する方法

    タイトルがわかりづらくてすみません。 具体的には、次のような表とマクロがあった場合   A    B 1  1   1 2     2 3      3 4      4 5      5 Sub test() Dim a, g As Integer Dim f As String a = 1 Do f = Cells(a, 2).Value g = Len(Cells(1, 1).Value) Cells(1, 1).Value = IIf(Cells(1, 1).Value <> "", Cells(1, 1).Value & "+" & f, f) Cells(1, 1).Characters(start:=g + 2, Length:=Len(f)).Font.ColorIndex = 3 a = a + 1 Loop Until Cells(a, 2).Value = "" End Sub セルA1には「1+2+3+4+5」という結果が入りますが、最後の「5」だけが赤文字になります。 そうではなくて、新たに加えた「2+3+4+5」の部分すべてを赤文字にするにはどうすればよいでしょうか。 つまり、ループの最初の結果をそのまま保持したいということです。 未熟者なのと、もっと大きなマクロの一部を質問用に抜き出したものなので、たどたどしい文法になっていますが、その辺は目をつぶってください。 どうかよろしくお願いします。

  • Excel 任意のセルを指定する方法

    Excel 任意のセルを指定する方法 こんにちは Excel2003でセルの上を「---」で覆うマクロを作成しました。(以下参照) でもこれはセル「K2」に作成されます。 任意の作成したいセルを「---」で覆うようにするのには どのように改造すればよいでしょうか? おわかりの方お教えください。 ' 透明なセルを一つ作るマクロ ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 672.75, 13.5, _ 81#, 13.5).Select Selection.Characters.Text = "---" With Selection.Characters(Start:=1, Length:=3).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Selection.HorizontalAlignment = xlCenter Selection.ShapeRange.Fill.Visible = msoFalse 'Selection.ShapeRange.Fill.Solid 'Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Visible = msoFalse Range("K2").Select End Sub

  • 任意のセルでマクロを実行させたい

    アクティブセルにマクロを実行させたいのですがうまくいきません。 2007のエクセルを使用しています。 (1)命令文で指定しているセル(G9:G11)をJ9:J11やR14:R16等でも使用したい。 (2)また作成したマクロを同シート内オートシェイプに登録したい。 よろしくお願いいたします。 Sub Macro2() ' ' Macro2 Macro ' ' Range("G9:G11").Select Selection.ClearContents With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .Orientation = xlVertical .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With With Selection.Font .Name = "MS P明朝" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 16777164 .TintAndShade = 0 .PatternTintAndShade = 0 End With ActiveCell.FormulaR1C1 = "搬入" With ActiveCell.Characters(Start:=1, Length:=2).Font .Name = "MS P明朝" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With ActiveCell.Characters(1, 2).PhoneticCharacters = "ハンニュウ" Range("G12").Select End Sub

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

    エクセルマクロで困っています。 セルの範囲指定をしようとしています。 初心者過ぎて、よくわかりません。 現在のマクロ↓ Sub 済() If ActiveCell.Column = 21 Then Selection.FormatConditions.Delete '条件付き書式削除 With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With '色変え判定セル書き換え ActiveCell.Offset(0, 5).Select ActiveCell.FormulaR1C1 = "77" ActiveCell.Offset(0, -5).Select Else answer = MsgBox("U列を選択して下さい", vbCritical) End If End Sub やりたい事は、下記の通りです。 列Uがアクティブの時にU~ACの行を塗りつぶし。 列は変動します。 今は、やり方がよく分からなかったため オフセットで一つ一つ塗りつぶしてます。 マクロを組みすぎてファイルが重くなって困っています。 回答よろしくお願いいたします。

専門家に質問してみよう