VBA

2016-10-13 18 views
0
に間違った非数値の書式を変更するステートメントは

私はこのコードを持っている場合:VBA

With .Cells(i, 6) 
     If .NumberFormat <> "0.0%" Then 
      .NumberFormat = "0.0%" 
      If .Value2 <> vbNullString And IsNumeric(.Value2) Then .Value = .Value/100 
       If .Value2 = vbNullString Then 
        .Value = "---" 
        .HorizontalAlignment = xlRight 
       End If 
        If .Value >= 0.9 Then 
         .Interior.Color = RGB(237, 67, 55) 
         .Font.Color = vbWhite 
        End If 
     Else 
      .Value = 0 
     End If 
    End With 

どのようなコードはありませんが90%以上ある列の値を探しているそうだとすれば、それをセルの内部を赤に、フォントを白にフォーマットします。しかし、私はいくつかのセルには何の価値もないので、私はセルにこの "---"を入れて見た目を整えたいと思っていますが、コードを実行すると "--- "それは赤い塗りつぶしと白いフォントに整形されます。 私が望むのは、それらのセルが元の書式設定のままであることです。

私はこのif文を書かれたが、「THEN」部分の後に書くために何を知らないいる:

IF .Value = "---" Then 

私は新人です!ご協力いただきありがとうございます!

+1

ではなく、これを行うためにコードを書くには、Excelの条件付き書式 '」を見てみましょう。この種のものを行うように作られています – Zac

+0

"0.0%"に変更する前の元のセルフォーマットは何ですか? –

+0

@ Zac:null値を "---"に設定できますが、 ""を "---"に設定することはできません。 – Pierre

答えて

3

この回答はありますか?

With .Cells(i, 6) 
     If .NumberFormat <> "0.0%" Then 
      .NumberFormat = "0.0%" 
      If .Value <> vbNullString And IsNumeric(.Value2) Then 
       .Value = .Value/100 
       if .Value >= 0.9 Then 
        .Interior.Color = RGB(237, 67, 55) 
        .Font.Color = vbWhite 
       End If 

      elseIf .Value = vbNullString Then 
        .Value = "---" 
        .HorizontalAlignment = xlRight 
      Else 
       stop 'I think you forgot this case 
      end if 
     Else 
      .Value = 0 
     End If 
    End With 

編集:@ Zacの提案を追加します:赤色の条件付き書式設定を使用します。

+0

私は学校の男の子のエラーを作った!まだ構文に慣れています! –

1

これはトリックを行う必要があり、あなたのテストに優先順位を付ける:

With .Cells(i, 6) 
    If .NumberFormat <> "0.0%" Then 
     .NumberFormat = "0.0%" 
     If .Value2 <> vbNullString Then 
      If IsNumeric(.Value2) Then .Value2 = .Value2/100 
      If .Value2 >= 0.9 And .Value <> "---" Then 
       .Interior.Color = RGB(237, 67, 55) 
       .Font.Color = vbWhite 
      End If 
     Else 
      .Value = "---" 
      .HorizontalAlignment = xlRight 
     End If 
    Else 
     .Value = 0 
    End If 
End With