プロが教えるわが家の防犯対策術!

エクセルファイルの中で、あるセル(シート1のH列限定がベター)の文字列が、もし「合計2箱」という文字列だった場合、その「合計2箱」というフォントを赤色に変更したい、と思っています。
(合計2箱はIF関数による返数です)
このような場合、VBAコードはどう組めばいいでしょうか?
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

以下で如何でしょう?


Sub hoge()
Dim rs As Range, r As Range
Set rs = Worksheets("Sheet1").Range("H:H")
For Each r In rs
If r.Value = "合計2箱" Then
r.Font.Color = RGB(255, 0, 0)
End If
Next
End Sub

でも、色を変えたい文字列とセルが決まっているのであれば、
条件付き書式を使用した方が良いような?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
なるほど!条件付き書式で事足りますね。今回はこれで処理しようと思います。

VBAも試してみました。OKでした。ただ、ボタンを作ってそこにマクロ登録させたんですが、このような処理は自動的に、というわけにはいかないのでしょうか?

少し今回の質問の趣旨とそれますが、標準モジュールでは無く、ワークシートに作成する場合がありますが、どのように使い分けするべきなんでしょうか?印刷前、とか保存前に起動させたい時は、後者が良いということでしょうか?

お礼日時:2015/12/20 04:24

> イベント選択の「シートの価が変更された時」というのは、英語で何て表していますか?



Private Sub Worksheet_Calculate()

Private Sub Worksheet_Change(ByVal Target As Range)
ですね。

前者はセルに書かれている計算式の計算の結果変化した場合、後者は入力で変化した場合……だったと思います。後者のTargetという変数は、値が変化したセルになります。
    • good
    • 0
この回答へのお礼

勉強になりました。ありがとうございました。

お礼日時:2015/12/20 08:08

> このような処理は自動的に、というわけにはいかないのでしょうか?



下記のWorksheet_Changeイベントで実現できます。
でもマクロを使わずに実現できるなら、そちらを使用した方が良いと思いますよ。


> ワークシートに作成する場合がありますが、どのように使い分けするべきなんでしょうか?

ワークシートのコードを書くエリアの上の(General)というプルダウンメニューをWorksheetに変更すると、隣の(Declaratin)のメニューで色々なイベントが選択できます。ですから、あるイベントが発生したときに自動でマクロを実行させることができるようになります。
(例:そのシートがアクティブになった場合、シートの値が変更された場合等)

またThisWorkbookに作成すると、ワークブックに対するイベント発生時に自動でマクロが実行できるようになります。
(例:ファイルオープン時等)
    • good
    • 0
この回答へのお礼

丁寧なお答えありがとうございます。もう一つだけ教えてください。
イベント選択の「シートの価が変更された時」というのは、英語で何て表していますか?

お礼日時:2015/12/20 07:01

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで特定文字列に色をつけたいです。

表中の特定の文字列(例「日本」)に色をつけて表示するようにしたいのですが、ひとつひとつ手で変えていくしかないのでしょうか。
よろしくお願いします。

Aベストアンサー

vba処理です

Sub test()
Dim rng As Range, r As Range, i As Long, colInd As Integer
With ActiveSheet
Set rng = .Range("a1:z100") '範囲の設定
txt = "日本" '文字の設定
colInd = 3 '色の設定
For Each r In rng
If InStr(r, txt) > 0 Then _
r.Characters(InStr(r, txt), Len(txt)) _
.Font.ColorIndex = colInd
Next
End With
End Sub

Qエクセルで行の高さ及び列幅の余裕分を自動的に調整する方法

 エクセルで表を作成します。その際、標準の状態(行の高さ12.75、列幅8.43)では、文字を入力すると、セルぎりぎりとなってしまい、やや見にくいこととなるため、手動である程度広げ、余裕を持たせています。
 しかし、この方法では追加でセルの中にデータを入力した場合には再度、また手動で広げなおす必要があります。また、各行又は列の余裕幅を目算で調整することは煩雑です。
 そこで、当初の設定か何かで、データとセル範囲の上下左右に自動的に余裕幅を設けるような設定はできないでしょうか。特に、追加でデータが入力された場合には、その余裕幅を持たせるように行又は列が広がるような仕組みであると助かります。
 宜しく御願いします。

Aベストアンサー

お久しぶりです。
下記のコードを貼り付けて下さい。
仮に高さ及び幅をぴったりから1.2倍するコードです。
ちなみにcolは幅で、
rowは高さなので、1.2の所をお好きな数字におきかえて
下さい。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim col As Long
Dim row As Long
row = Target.row
col = Target.Column
Cells.Select
Cells.EntireColumn.AutoFit
Cells.EntireRow.AutoFit
Columns(col).ColumnWidth = Columns(col).ColumnWidth * 1.2
Rows(row).RowHeight = Rows(row).RowHeight * 1.2
End Sub

QExcel 特定の文字色だけを変更したい

Excel2000を使っています。

ある表を作成中、フォントを青文字と赤文字でリストを作っていました。
が、複数人数で作業をしていた為、フォントの「青文字」が「青」と「薄い青」で作成されてしまいました。

ところどころに「赤」のフォントもあります。
同じセル内での文字色は1色です。

リストの量が多いため、ひとつひとつセルをクリックして「薄い青」を「青」にしていくのが難儀です・・・
「薄い青」を「青」にどうにか簡単に変更できないものでしょうか?

と、この説明で伝わるでしょうか・・・。
知恵を貸して頂けたら、と思います。よろしくお願いします。

Aベストアンサー

>同じセル内での文字色は1色です。
ならまだ簡単です。以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。

Sub Macro2()
Dim r As Range
For Each r In Cells.SpecialCells(xlCellTypeConstants, 3)
  If r.Font.ColorIndex = 41 Then
    r.Font.ColorIndex = 5
  End If
Next r
End Sub


人気Q&Aランキング