John_Public
John_Public

Reputation: 11

VBA code number formatting

Worksheet image

With the below code I am trying to format cells when certain names appear in a drop down list(cell C4) and format these specific cells in Range G9:N9. But when I run the code it converts all numbers into percents appose to differentiating between the two formatting styles (Percent and General). Can anyone help?

Sub LetsMakeThisWork()
    With Worksheets("Geo")
        If C4 = V2 Or C4 = x2 Or C4 = AB2 Or C4 = AD2 Or C4 = AG2 Or C4 = AM2 Or C4 = AO2 Or C4 = AQ2 Or C4 = AU2 Or C4 = AW2 Then
            ActiveCell.Range("G9:N9").NumberFormat = "0.0%"
        Else
            ActiveCell.Range("G9:N9").NumberFormat = "General"    
        End If
    End With
End Sub

Upvotes: 0

Views: 207

Answers (1)

John Coleman
John Coleman

Reputation: 52008

In context, you intend C4, V2 etc. to be a cell references but VBA is interpreting them as variables. The fact that your code runs at all in that case implies that you are not using Option Explicit, which you really should use in VBA. What seems to be happening is that you are implicitly creating empty variables in the process of testing them for equality. Any two empty variables are equal, hence the first clause of the If statement is always run. Corrected, but not tested, your code should (I think) look like this:

Option Explicit

Sub LetsMakeThisWork()
    Dim C4 As Range
    With Worksheets("Geo")
        Set C4 = .Range("C4")
        If C4.Value = .Range("RV2").Value Or C4.Value = .Range("X2").Value Or _
            C4.Value = .Range("AB2").Value Or C4.Value = .Range("AD2").Value Or _
            C4.Value = .Range("AG2").Value Or C4.Value = .Range("AM2").Value Or _
            C4.Value = .Range("AO2").Value Or C4.Value = .Range("AQ2").Value Or _
            C4.Value = .Range("AU2").Value Or C4.Value = .Range("AW2").Value Then
            .Range("G9:N9").NumberFormat = "0.0%"
        Else
            .Range("G9:N9").NumberFormat = "General"
        End If
    End With
End Sub

Upvotes: 1

Related Questions