2016-12-07 17 views
2

私はVBAコーディングが新しく、次の条件でVBAスクリプトを作成するのを手伝ってください。vbaを使用して小数点以下3桁以上6桁以下のセルをハイライト表示するにはどうすればよいですか?

  1. 小数点を含むセルをハイライト表示する必要があります。
  2. 文字数が3未満または6より大きいセルを強調表示する必要があります。
  3. 最後の行が最後に使用されるまでG列(G1)から実行する必要があります。

私のデータは英数字または数字です。

私はcharacters.countValue.countを使用しようとしましたが、うまくいきませんでした。それがlenと動作することを願っていますが、私はどのように開始するのか分かりません。添付

は、サンプルが、私は以下のコードを試してみました

強調した細胞を持つファイルをエクセルです。私のデータは英数字なので、文字数は役に立たない。前

Sub HighlightCells() 
Range(" G1").Select 
Do 
    If ActiveCell.Characters.Count < 3 Then 
    With Selection.Interior 
     .Pattern = xlSolid 
     .PatternColorIndex = xlAutomatic 
     .Color = 65535 
     .TintAndShade = 0 
     .PatternTintAndShade = 0 
    End With 
    End If 
    ActiveCell.Offset(0, 1).Select 'need to run in every row till the last row  last used cell 
Loop Until ActiveCell = "" 

Range(" G1").Select 
Do 
    If ActiveCell.Characters.Count > 6 Then 
    With Selection.Interior 
     .Pattern = xlSolid 
     .PatternColorIndex = xlAutomatic 
     .Color = 65535 
     .TintAndShade = 0 
     .PatternTintAndShade = 0 
    End With 
    End If 
    ActiveCell.Offset(0, 1).Select 'need to run in every row till the last row last used cell 
Loop Until ActiveCell = "" 
End Sub 
+0

条件は***と***条件か*** OR ***条件ですか? –

+0

*** ***文字が含まれていない場合は、セルをハイライト表示しますか? –

+0

条件はORのみです。文字のない空白のセルは強調表示する必要はありません。 – Mahesh

答えて

0

enter image description here

このコードは、ほとんどVBAに英語であなたの説明の直接の翻訳である:

Sub Dural() 
    Dim N As Long, i As Long, s As String, L As Long 

    N = Cells(Rows.Count, "G").End(xlUp).Row 
    For i = 1 To N 
     s = Cells(i, "G").Text 
     L = Len(s) 
     If InStr(1, s, ".") > 0 Or (L < 3 Or L > 6) Then 
      With Cells(i, "G").Interior 
       .Pattern = xlSolid 
       .PatternColorIndex = xlAutomatic 
       .Color = 65535 
       .TintAndShade = 0 
       .PatternTintAndShade = 0 
      End With 
     End If 
    Next i 
End Sub 

以降:

enter image description here

+0

ありがとうゲーリー。それは華麗に動作します.. !!他の行も含めることができますか?私はG、H、I、J ... BX、BY、BZを意味します。今のところG行でのみ動作します。 – Mahesh

+0

@Mahesh –

+0

こんにちはゲイリーの完全なリストが必要です。私はあなたのコメントを完全に見ることができません。 – Mahesh

0
Sub Test() 
    Application.ScreenUpdating = False 
    LastRow = Rows(ActiveSheet.UsedRange.Row + _ 
    ActiveSheet.UsedRange.Rows.Count - 1).Row 
    LastCol = Columns(ActiveSheet.UsedRange.Column + _ 
    ActiveSheet.UsedRange.Columns.Count - 1).Column 
    For Each cll In Range(Cells(1, 7), Cells(LastRow, LastCol)) 
    s = cll.Value 
    l = Len(s) 
    If ((l > 0) And (l < 3)) Or (l > 6) Or (s Like "*#.#*") _ 
     Then cll.Interior.Color = vbRed 
    Next cll 
    Application.ScreenUpdating = True 

エンドサブ

+0

上記のコードは私にとって完璧に機能しました。 – Mahesh

関連する問題