Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3482 / 13646 ツリー ←次へ | 前へ→

【61915】この背景色を変えるVBAの改造について Tax 09/6/11(木) 23:08 質問[未読]
【61917】Re:この背景色を変えるVBAの改造について つるりん 09/6/12(金) 7:29 回答[未読]
【61918】Re:この背景色を変えるVBAの改造について つるりん 09/6/12(金) 8:04 回答[未読]
【61920】背景色を変えるだけではなく、R列と合致す... Tax 09/6/12(金) 9:11 質問[未読]
【61921】Re:背景色を変えるだけではなく、R列と合致... つn 09/6/12(金) 9:51 発言[未読]
【61923】Re:背景色を変えるだけではなく、R列と合致... neptune 09/6/12(金) 10:14 回答[未読]
【61943】Re:背景色を変えるだけではなく、R列と合致... [名前なし] 09/6/13(土) 14:34 発言[未読]
【61944】Re:背景色を変えるだけではなく、R列と合致... つるりん 09/6/13(土) 14:56 回答[未読]

【61915】この背景色を変えるVBAの改造について
質問  Tax  - 09/6/11(木) 23:08 -

引用なし
パスワード
   VBAは殆ど分からないもののインターネットでコードを見つけては、コードを少しいじっては失敗・・・の繰り返しで何とか使っている者です。
以下のコードを使って特定の文字列の背景を変えていますが、どうも使い勝手がよくありません。
'---以下3行に検索単語を入力---
ではなく、R列もしくはR1からR10に入力された数字の背景を変えるように改変したいのですが、その改変策を教えてもらえませんか?

図々しいですがぜひお願いします。


Sub test()

Dim 検索 As Variant
Dim firstAddress As Variant
Dim list(3)

'---以下3行に検索単語を入力---
list(1) = "aaa"
list(2) = "iii"
list(3) = "uuu"

For i = 1 To 3
Set 検索 = Columns("A:IV").Find(list(i), LookIn:=xlValues)
If Not 検索 Is Nothing Then
firstAddress = 検索.Address
Do
検索.Interior.ColorIndex = 3
Set 検索 = Columns("A:IV").FindNext(検索)
Loop While Not 検索 Is Nothing And 検索.Address <> firstAddress

Else
End If
Next i
End Sub

【61917】Re:この背景色を変えるVBAの改造について
回答  つるりん  - 09/6/12(金) 7:29 -

引用なし
パスワード
   R1:R10セルの背景色を変更するだけなら
Range("r1:r10").Interior.ColorIndex = 3
だけでいいのでは?

【61918】Re:この背景色を変えるVBAの改造について
回答  つるりん  - 09/6/12(金) 8:04 -

引用なし
パスワード
   数値が入力されたセルのみを変更したいなら以下で。
Sub test()
Dim Urng1 As Range
Dim Urng2 As Range

Set Urng1 = Range("r1:r10")
Urng1.Interior.ColorIndex = xlNone
On Error Resume Next
  Set Urng2 = Urng1.SpecialCells(Type:=xlCellTypeConstants, Value:=xlNumbers)
On Error GoTo 0
If Urng2 Is Nothing Then
  MsgBox "該当なし"
Else
  Urng2.Interior.ColorIndex = 3
End If
End Sub

【61920】背景色を変えるだけではなく、R列と合致...
質問  Tax  - 09/6/12(金) 9:11 -

引用なし
パスワード
   いやいや、背景色を変えるだけではなく、R1からR10に入力された文字列と合致する文字列が入力されたセルの背景色だけを変える方法です。
今のコードですと背景色を変える数値が変るたびに、
list(1) = "aaa"
list(2) = "iii"
list(3) = "uuu"
を変える必要があるので大変なのです。

皆さんの追加のお返事をお待ちしてます。

【61921】Re:背景色を変えるだけではなく、R列と合...
発言  つn  - 09/6/12(金) 9:51 -

引用なし
パスワード
   ▼Tax さん

>いやいや、背景色を変えるだけではなく、R1からR10に入力された文字列と合致する文字列が入力されたセルの背景色だけを変える方法です。

最初のご質問の文章では、そこまで読み取れませんよね。
最初からもう一度Taxさんがされたい処理の、仕様や条件を細かく提示されたらいかがでしょう。

【61923】Re:背景色を変えるだけではなく、R列と合...
回答  neptune  - 09/6/12(金) 10:14 -

引用なし
パスワード
   ▼つn さん:

最初のサンプルソース・・・・ササッと見た感じ、突込みどころはある
ようですけど。それはおいといて、
基本的には変数list()の所を、R1からR10に入力された文字列に修正するだけですよね?
まぁ多少はそれに伴い変更箇所もありますが。

listの代わりに
オブジェクト変数を用意して、Setステートメントを使用して、セル(Rangeオブジェクト)
への参照を代入するだけですが。

キーワードは全て書いていますので、それらを調べれば山のようにサンプルが
出てきますから後はご自分で調べて下さい。

#誰が読んでも、誤解しない質問を心掛けましょう。

【61943】Re:背景色を変えるだけではなく、R列と合...
発言  [名前なし]  - 09/6/13(土) 14:34 -

引用なし
パスワード
   いやいや
おいらは、日本語で書かれた部分の質問に反応しただけなので・・・
どっかから拾ってきたコードを貼り付けて、それから
したいことの意味を読み取って、回答せよとは
質問者としての労力を惜しみすぎだとおもふ。

【61944】Re:背景色を変えるだけではなく、R列と合...
回答  つるりん  - 09/6/13(土) 14:56 -

引用なし
パスワード
   上の名無しはおいら。
で、以下のようなのでいいんじゃないかな?
アドレスはそちらにあわせて変更されてね。
Option Explicit

Sub test()
Dim buf
Dim Urng1 As Range, Urng2 As Range
Dim i As Long
Dim Uobj As Object
Dim fAd As String

Set Urng1 = Range("a1:a5")
Set Urng2 = Range("c1").CurrentRegion
buf = Urng1.Value
With Urng2
For i = 1 To UBound(buf)
  Set Uobj = .Find(what:=buf(i, 1))
  If Not Uobj Is Nothing Then
    fAd = Uobj.Address
    Do
      Uobj.Interior.ColorIndex = 4
      Set Uobj = .FindNext(Uobj)
        If Uobj.Address = fAd Then Exit Do
    Loop
  End If
Next
End With
  
End Sub

3482 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free