2017-10-18 7 views
0

値が別の列に入力されたときに、スプレッドシート内の特定のセルを強調表示することを検討しています。これは条件付き書式設定で行うことができますが、会社内の状況によってVBAを使用する必要があります。 、ANYTHINGは、例えば、カラムL.に入力されるたびに、私は値の私の範囲内の11個の異なる列を強調しようとしています他の値が存在するときのVBAハイライトセル

を(スプレッドシートは、条件付き書式を読み取ることができない別のプログラムに渡された)ときの日付それL2に入力され、C2、J2、K2などが黄色で強調表示されます。

残念ながら、私がマクロを実行すると、何も起こりません。私はそれが走るのを見るが、結果は得られない。エラーメッセージさえない。あなたが私を助けるために取る時間の前にありがとう!

Dim rng As Range, r As Range 

Set wb = ThisWorkbook 
Set sht1 = wb.Sheets("From GIS") 
Set sht2 = wb.Sheets("To MapCall") 

Set rng = Intersect(sht2.UsedRange, Range("L:L")).Cells 


For Each r In rng 
    If r.Value = "" Then 
     Cells(r.Row + 1, "C,J,K,Q,AI,AV,AW,AX,AY,AZ,BR").Interior.Color = RGB(255, 255, 0) 

    End If 
Next r 
+0

セル(r.Row + 1、 "C") 'などは、個々の行を使用するか、ループを設定する必要があります。あなたの 'rng'行にもシートを指定する必要があります。 – SJR

答えて

1

この試してみると何かが範囲内に入っている場合は、色を適用するようr.Valueは=「」r.Value <に>「」それは空白になっていないときに変更してください。実際に必要なものを調整してください。なぜ私はr.Row + 1を使ったのかも分かりません。それはあなたが望むものではなく、以下のコードのi = r.Row + 1をi = r.Rowに置き換えます。

また、コードで使用されるすべての変数を宣言することをお勧めします。

Dim wb As Workbook 
Dim sht1 As Worksheet, sht2 As Worksheet 
Dim rng As Range, r As Range, clrRng As Range 
Dim i As Long 
Set wb = ThisWorkbook 
Set sht1 = wb.Sheets("From GIS") 
Set sht2 = wb.Sheets("To MapCall") 

Set rng = Intersect(sht2.UsedRange, Range("L:L")).Cells 
For Each r In rng 
    If r.Value = "" Then 
     i = r.Row + 1 
     Set clrRng = Union(Range("C" & i), Range("J" & i & ":K" & i), Range("Q" & i), Range("AI" & i), Range("AV" & i & ":AZ" & i), Range("BR" & i)) 
     clrRng.Interior.Color = RGB(255, 255, 0) 
    End If 
Next r 
+0

素晴らしい!それは私が探していたものだけです!わかりやすくするために、私はヘッダーの行をスキップしたいので、r.Row + 1を使用しています。これを行う簡単な方法があれば、私はすべての耳です。私は仕事でVBAを使用しませんが、このプロジェクトのためにそれを学ぶように求められています。このサイトは非常に貴重です!ありがとうございました。 – Rmoore

+0

@Rmoore You'rようこそ!それがうれしかった。あなたがそのように働くのであればそれに固執する。 – sktneer

0

create a union of rangesの1つの方法があります。

Sub test() 

    Dim Rng As Range, r As Range, uRng As Range, row As Long 

    Set wb = ThisWorkbook 
    Set sht1 = wb.Sheets("From GIS") 
    Set sht2 = wb.Sheets("To MapCall") 

    Set Rng = Intersect(sht2.UsedRange, Range("L:L")).Cells 

    For Each r In Rng 
     If r.Value <> "" Then 
      row = r.row 

      Set uRng = Union(Cells(row, "C"), Cells(row, "J")) 'Etc... Keep going with each column 
      uRng.Interior.Color = RGB(255, 255, 0) 

     End If 
    Next r 

End Sub 
+0

それは私が探しているものに近づいています!少なくとも私はいくつかの強調表示されたセルを取得します!範囲内のセルのみを強調表示するように見えます。範囲内のJ2からJ10の場合、J11は強調表示されています。 – Rmoore

+0

過去、次の行のように?その場合は、あなたのコードでr.row + 1が呼び出されたからです。+1を削除することができます。 'row = r.row + 1'ではなく' row = r.row'のコードを更新しました。それが役立つかどうかを見てください。 –

+0

私はちょうどまたあなたに質問を再読します。 'L'が空白でないときにセルをハイライトしたいと思っていました。だからコードの一部を 'If r.Value =" "Then''から' 'r.Value <> '" Then ''に変更しました –

関連する問題