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

コードはどのように書けばよいのでしょうか?

(1)そのようなコードを持っていらっしゃったらいただけないでしょうか?

(2)または、参考になるページがありましたら教えていただけないでしょうか?

現在勉強を始めたところですが、よろしくお願いいたします。

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

A 回答 (3件)

セルの文字列の中に,


たとえば
aaaeeessseee
ssddd
dfg
weeeff
のセルの中の
eeeに赤色文字にする。
セル範囲Range("A1:C6")を対象にしてます。
ーーーー
Sub test01()
Dim cl As Range
For Each cl In Range("a1:c6")
r = InStr(cl, "eee")
If r <> 0 Then
cl.Characters(r, 3).Font.Color = vbRed
End If
Next
End Sub
    • good
    • 7
この回答へのお礼

ありがとうございます!まだ、コードを書ける段階ではありませんが、試して見ます。
早く、imogasiさんのように、使えるようになりたいと思います。

お礼日時:2005/05/28 03:16

例えば


Range("A1").Characters(2, 3).Font.Color = vbBlue
とすれば、
A1のセルに入力されている文字の2文字目から3文字を青にします。
Colorでなく
ColorIndexを使う方法もあります
    • good
    • 0
この回答へのお礼

わざわざ答えていただき、誠にありがとうございます。ポイントをお渡しできなくて申し訳ないです。このコードも試させていただきます。

お礼日時:2005/05/28 03:19

下記参考になると思います。



参考URL:http://www.hiroyuki.tank.jp/soft/macro/mokuji.htm
    • good
    • 0
この回答へのお礼

ありがとうございます。参考になりそうです!!

初めて、教えて!gooに書き込んだのですが、こんなに早く反応してくださる方がいるとは思いませんでした。

お礼日時:2005/05/27 17:47

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

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

このQ&Aを見た人はこんなQ&Aも見ています

この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

QEXCEL VBA で複数の特定文字に色をつけたい

マクロ実行で以下のように一括色変更できないでしょうか?
1文字での変更は下記コードでおこなうことができましたが、複数であると初心者でとても分かりません。
※S25とF30.、F5.は加工進行でいろいろ数値のみ変えます。
※M100、M101は全体の4文字は変わりませんが数字は増えていき、ランダムにこの先の加工進行上でてきます。
※M03、M00は3文字で変わりません。

現在以下のコードで1文字ずつならできます。


Sub test01()
Dim cl As Range
For Each cl In Range("a1:a10")
r = InStr(cl, "M00")
If r <> 0 Then
cl.Characters(r, 3).Font.ColorIndex = 3
End If
Next
End Sub

Aベストアンサー

No.2・3・4です!
親の仇のように顔をだします。

No.4のお礼欄に
>D列、E列、F列、G列まで色を配置して
とありましたので・・・
列で色を決めるのではなく、前回のC列データのフォントを好みの色にしておいて
その文字はその色に表示する!という考え方でのコードにしてみました。
※ 今回は複数回出現してもC列にあるデータはすべてをC列データ色にするようにしています。

Sub Sample2()
Dim i As Long, k As Long, n As Long, str As String
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
For k = 1 To Cells(Rows.Count, "C").End(xlUp).Row
For n = 1 To Len(Cells(i, "A"))
str = Cells(k, "C")
If Mid(Cells(i, "A"), n, Len(str)) = str Then
Cells(i, "A").Characters(Start:=n, Length:=Len(str)).Font.Color = Cells(k, "C").Font.Color
End If
Next n
Next k
Next i
End Su

こんなんではどうでしょうか?m(_ _)m

No.2・3・4です!
親の仇のように顔をだします。

No.4のお礼欄に
>D列、E列、F列、G列まで色を配置して
とありましたので・・・
列で色を決めるのではなく、前回のC列データのフォントを好みの色にしておいて
その文字はその色に表示する!という考え方でのコードにしてみました。
※ 今回は複数回出現してもC列にあるデータはすべてをC列データ色にするようにしています。

Sub Sample2()
Dim i As Long, k As Long, n As Long, str As String
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
...続きを読む

QEXCELの文字列を指定の色に変えるには

EXCELの例えばA列の文字データの特定の文字列を一括して指定色(例えば赤)に変えるにはどうしたらよいか教えてください。
例:A列の1~1000行の各行に文字データが入力されている。これらのデータの内"ABC"という文字列だけ一括して赤色にかえたい。

Aベストアンサー

>データの内"ABC"という文字列だけ一括して赤色にかえたい
の意味が「ABCという文字列を含むセルは全部赤にしたい」ということであれば「編集」→「置換」→「置換前と後の文字列にABCを指定」→「オプション」→「書式」で文字色を指定できます。

そうではなく、「XXXXABC12334」という文字列の中で「ABC」の部分だけを赤にしたいならマクロが必要です。

以下のマクロをALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はシート画面に戻って、ALT+F8を押してマクロ一覧からマクロ名を選択して実行します。
Sub Macro1()
Dim rng As Range
Dim ptr As Integer
Const tStr As String = "ABC" 'ここに色を変える文字列を書く
 For Each rng In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 23)
  ptr = InStr(rng.Value, tStr)
  If ptr > 0 Then
   rng.Characters(Start:=ptr, Length:=Len(tStr)).Font.ColorIndex = 3
  End If
 Next rng
End Sub

>データの内"ABC"という文字列だけ一括して赤色にかえたい
の意味が「ABCという文字列を含むセルは全部赤にしたい」ということであれば「編集」→「置換」→「置換前と後の文字列にABCを指定」→「オプション」→「書式」で文字色を指定できます。

そうではなく、「XXXXABC12334」という文字列の中で「ABC」の部分だけを赤にしたいならマクロが必要です。

以下のマクロをALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペース...続きを読む

Qセル色を、ある条件で自動的に色分けして塗りつぶしさせたい

こんにちは。いつもお世話になっております。
まさに標題の通りなのですが、有る位置のセル内に入れた数字によって設定済みの色でセルを
塗りつぶしたい場合、どのようにすれば宜しいでしょうか。
因みに現在は下記の通りに設定しております。


●現在の設定●
書式(D)→条件付き書式(D) にて

条件1(1)
数式が =$G2=1 であればセル色を黄緑

条件2(2)
数式が =$G2=2 であればセル色をピンク

条件3(3)
数式が =$G2=3 であればセル色を水色

◆この度、設定変更しなくてはならない背景◆
来月からセルG2に入れる数字が現状では1,2,3のみですが1,2,3,4,5と変更になる為。
(書式付き設定ではMAX3つまでしか設定できないように見受けられるので)


尚、当方はさほどエクセルに精通しておりませんのでマクロやVBAなど組んだ事が無く、かつ、
以前ちょっと挑戦しようと思ったのですが全く理解できなかった為、例えば関数などを用いて
設定出来る方法がありましたら例文を記載して戴けますと非常に助かります。

また、エクセルのヘルプで検索した結果
「VBAを使用してセルの塗りつぶしの色を変更する」というものを見つけたので閲覧↓
http://office.microsoft.com/ja-jp/excel/HA011366271041.aspx?pid=CL100570551041
したのですが、式らしきものを見つけたものの、その意味が理解できず、どのように記述して
よいのか判りませんでした。。。

以上、お手隙の方、いらっしゃいましたら何卒ご教授の程、お願い致します。

こんにちは。いつもお世話になっております。
まさに標題の通りなのですが、有る位置のセル内に入れた数字によって設定済みの色でセルを
塗りつぶしたい場合、どのようにすれば宜しいでしょうか。
因みに現在は下記の通りに設定しております。


●現在の設定●
書式(D)→条件付き書式(D) にて

条件1(1)
数式が =$G2=1 であればセル色を黄緑

条件2(2)
数式が =$G2=2 であればセル色をピンク

条件3(3)
数式が =$G2=3 であればセル色を水色

◆この度、設定変更しなくてはなら...続きを読む

Aベストアンサー

#02です。補足を見て変更しました。
色番号はご自由に直してください

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r, rng As Range
Const trg As String = "G2:G50" ' "A1:A3"のように複数セルでもよい
 Set rng = Intersect(Target, Range(trg))
 If Not rng Is Nothing Then
  For Each r In rng
   Select Case r.Value
   Case Is = 1 'もし入力されたのが1ならば
    Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = 4 '背景色を黄緑
   Case Is = 2 'もし入力されたのが2ならば
    Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = 7 '背景色をピンク
   Case Is = 3 'もし入力されたのが3ならば
    Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = 8 '背景色を水色
   Case Is = 4 'もし入力されたのが4ならば
    Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = 6 '背景色を黄色
   Case Is = 5 'もし入力されたのが5ならば
    Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = 3 '背景色を赤
   Case Else 'その他の値なら色を消す
    Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = xlNone
   End Select
  Next r
 End If
End Sub

#02です。補足を見て変更しました。
色番号はご自由に直してください

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r, rng As Range
Const trg As String = "G2:G50" ' "A1:A3"のように複数セルでもよい
 Set rng = Intersect(Target, Range(trg))
 If Not rng Is Nothing Then
  For Each r In rng
   Select Case r.Value
   Case Is = 1 'もし入力されたのが1ならば
    Cells(r.Row, 1).Resize(1, 8).Interior.ColorIndex = 4 '背景色を黄緑
   Case Is = 2 '...続きを読む

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Qエクセルマクロで特定の文字を探して隣のセルの色を変える

エクセルに入力されている特定の文字を探し出して隣のセルに色をつけたいと考えています。

検索の対象となるセルは全てのシートのB列です。
検索する文字は色々な英数字の組み合わせの中に含まれています。

  A  B
1  10 ABC000012
2  20 AAC000013
3  30 ACC000014

上記のような値が入力されている状態で、B列の"ABC"か"AAC"の何れかが入力されているセルの隣のA列のセルの色を変えたいです。
この場合はA1とA2のセルの色が変わるというイメージです。

VBAを使って処理したいのですが、どなたかご教授頂けないでしょうか。宜しくお願いいたします。

Aベストアンサー

VBAとのご所望なので一例です。

Sub test01()
Dim myRng As Range, c As Range, fAd As String, i As Long
Dim myStr
Set myRng = Range("B1", Cells(Rows.Count, "B").End(xlUp)) 'B列の検索範囲設定
For Each myStr In Array("ABC", "AAC") '指定の各検索文字につき
Set c = myRng.Find(What:=myStr, LookAt:=xlPart, After:=myRng.Cells(myRng.Count)) '部分一致検索
If Not c Is Nothing Then 'あったたら
fAd = c.Address '開始セルを記録
Do '繰り返す
i = i + 1 'カウント
c.Offset(0, -1).Interior.ColorIndex = 8 'セル着色
Set c = myRng.FindNext(c) '連続検索
Loop Until c.Address = fAd '一巡するまで'繰り返し
End If
Next myStr '次の検索文字に
If i = 0 Then 'なかったら
MsgBox "ありません", vbCritical, "? ( ̄~ ̄;)う~ん  "
Else
MsgBox i & "件を発見しました。", vbInformation, " ( ̄ー ̄)v"
End If
Set myRng = Nothing
Set c = Nothing
End Sub

VBAとのご所望なので一例です。

Sub test01()
Dim myRng As Range, c As Range, fAd As String, i As Long
Dim myStr
Set myRng = Range("B1", Cells(Rows.Count, "B").End(xlUp)) 'B列の検索範囲設定
For Each myStr In Array("ABC", "AAC") '指定の各検索文字につき
Set c = myRng.Find(What:=myStr, LookAt:=xlPart, After:=myRng.Cells(myRng.Count)) '部分一致検索
If Not c Is Nothing Then 'あったたら
fAd = c.Address '開始セルを記録
...続きを読む

Q[初心者です]VBAで指定列からAを検索し、発見したら隣のセルに値0を入れるマクロ。

VBAで指定列からAを検索し、発見したら隣のセルに0を入れるマクロを組みたいのですが、組み方がVBA初心者の為わかりません。
(例)
L列に、A、B、C、D、E、Fとランダムに文字が入っていて、
文字Aを検索し、発見したら隣のI列に値0を入れるというマクロです。

Sub Search()
Dim A As String
Set A = Worksheets("Sheet1").Cells.Find("A")
If A Is Nothing Then
ActiveCell.Offset(0, 1).Value = 0

End If
End Sub
と過去の質問で考えてみたのですが、Aがあった時、、、、
とコードが書けないです。
大変困っているので、ご教授頂けないでしょうか?
出来れば、そのままマクロに出来るコードを教えて頂けないでしょうか?
宜しくお願い致します。

Aベストアンサー

こんばんは。

#3さんのおっしゃっていることも、もっともなのですが、気になる点がありましたので、自分のことを踏まえて、書かせていただきます。

いずれ、また、同じようなケースが出会うと思います。こんな原則を考えてみたらどうでしょうか?それは、私も自身も同じなのですが、ワークシートのコマンドで行われるものは、記録マクロから作ってみるということです。他にも、「統合」とか、「置換」とか「オートフィルタ」「フィルタオプション」とかは、みんなパターンが決まっています。
その中の代表格が、この「Find」 です。

>Set A = Worksheets("Sheet1").Cells.Find("A")

>過去の質問で考えてみたのです

どうも、Find メソッドは、あるレベル以下の人は、省略する傾向があるようです。何が大事で、何が大事でないかというのは、やってみなければ分かりませんが、検索語だけを入れる書き方は、実務では、あまりしないほうがよいと思います。

だいたい、以下のTestFind2 ぐらいまでに、省略は、とどめたほうがよいです。

それは、Find は、必ずしも自分が思っているデフォルトとは違うことがあるので、「明示的(意図的に)」にオプションは入れたほうがよいです。
例えば、大文字小文字の違いを付けるなら、MatchCase:=True, 数式まで探すなら、LookIn:=xlFormulas

なお、Find メソッドは、5年経っても、たぶん完全に覚えられません。面倒なコードのひとつです。ですが、これはパターンが決まっているので、ひとつパターンが決まったら、それに当てはめればよいだけです。

#3さんで示されているMougのサンプルコードと似てはいるのですが、Mougのサンプルコードでは、Verionによって、失敗することがあります。

'--------------------------------------
'記録マクロをそのまま使う方法
Sub TestFind1()
Dim c As Range
 Set c = Columns("L:L").Find(What:="A", _
           After:=ActiveCell, _
           LookIn:=xlValues, _
           LookAt:=xlPart, _
           SearchOrder:=xlByRows, _
           SearchDirection:=xlNext, _
           MatchCase:=False, _
           MatchByte:=False, _
           SearchFormat:=False)
 c.Offset(0, 1).Value = 0
End Sub
'--------------------------------------
'TestFind1 をアレンジしてみる
Sub TestFind2()
Dim c As Range
'検索語
Const MYTXT As String = "A"
 Set c = ActiveSheet.Columns("L:L").Find(What:=MYTXT, _
           LookIn:=xlValues, _
           LookAt:=xlPart, _
           MatchCase:=False)
 If Not c Is Nothing Then
    c.Offset(0, 1).Value = 0
 End If
End Sub

'---------------------------------------
'複数ある場合(パターンを使った方法)
'---------------------------------------
Sub TestFind3()
  Dim c As Range
  Dim FirstAdd As String
  Const MYTXT As String = "A"
  Set c = ActiveSheet.Columns("L:L").Find( _
    What:=MYTXT, _
    LookIn:=xlValues, _
    LookAt:=xlPart, _
    MatchCase:=False)
  
  If Not c Is Nothing Then
    FirstAdd = c.Address
    Do
      c.Offset(, 1).Value = 0
      Set c = ActiveSheet.Columns("L:L").FindNext(c)
      If c.Address = FirstAdd Then Exit Sub
    Loop Until c Is Nothing
  End If
End Sub

こんばんは。

#3さんのおっしゃっていることも、もっともなのですが、気になる点がありましたので、自分のことを踏まえて、書かせていただきます。

いずれ、また、同じようなケースが出会うと思います。こんな原則を考えてみたらどうでしょうか?それは、私も自身も同じなのですが、ワークシートのコマンドで行われるものは、記録マクロから作ってみるということです。他にも、「統合」とか、「置換」とか「オートフィルタ」「フィルタオプション」とかは、みんなパターンが決まっています。
その中の代表...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QエクセルマクロVBA:該当セルの行の色を変更したい

すみません。

ご存じの方、ご教授願います。

エクセル用マクロを作成しているのですが、
たとえば、

A1、A4、A9に目的の該当文”FFFF”があり、
行1、行4、行9のバックカラーを変更する場合、
どのようなマクロを作成すればよいのでしょうか?

なお、上記A1、A4、A9は毎回一定ではなく、該当セルの数がゼロの場合もあれば、10以上の場合もあります。(同じ列には存在しています。)

検索”FFFF”→SHIFT+スペースではセルの場所が特定されてしまうので、目的の文の場所がかわったあるいはないときにも背景色を変えてしまいます。

どうかよろしくお願いします。

Aベストアンサー

こんな感じで如何でしょう。

Sub Sample()
Dim aCell As Range

Application.ScreenUpdating = False
Cells.Interior.ColorIndex = xlNone
For Each aCell In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
If aCell.Value = "FFFF" Then aCell.EntireRow.Interior.ColorIndex = 6
Next aCell
Application.ScreenUpdating = True
End Sub

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング