如何更改基于其值的单元格的多种格式的参数?

时间:2019-02-02 16:04:20

标签: excel vba

我想要写发生改变的范围基于所述小区选择值单元的样式属性的码。

它工作时,我只是改变了文本的颜色或字体,但如果代码什么也不做,因为我添加了多个参数每个。我也没有得到错误。

Dim userRange As Range

Set userRange = Application.InputBox("Select a range", Type:=8)

For Each cell In Selection

        If cell.Value < 0 Then cell.Font.FontStyle = "Comic Sans MS" & cell.Font.Size = 18 & cell.Font.Color = vbRed

        If cell.Value >= 0 And cell.Value <= 500 Then cell.Font.Bold = True & cell.Font.Italic = True & cell.Font.Underline = True

        If cell.Value > 500 And cell.Value <= 1000 Then cell.Font.FontStyle = "Monotype Corsiva" & cell.Font.Color = vbBlue & cell.Font.Underline = xlUnderlineStyleDouble

        If cell.Value > 1000 Then cell.Font.FontStyle = "Arial" & cell.Font.Bold = True & cell.Font.Italic = True & cell.Interior.Color = vbGreen & cell.Font.Color = vbWhite

Next cell

我觉得我真的很接近,但我似乎无法找出什么我做错了!我希望我的解释很清楚,因为我真的不用于编程/脚本。

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为这应该解决它。您的旧代码并未执行每一行。您必须插入/dev/stderr而不是:的空格。另外,如果您使用&功能来保存一些输入内容,它还会保存一些输入内容。另外请注意,您正在使用With,请确保这是故意的。

ActiveCell

答案 1 :(得分:1)

您定义了userRange,但是稍后您将遍历选择中的单元格。另外,您使用不正确。您可以尝试以下方法:

Dim userRange As Range

Set userRange = Application.InputBox("Select a range", Type:=8)

For Each cell In userRange

        If cell.Value < 0 Then
            cell.Font.FontStyle = "Comic Sans MS"
            cell.Font.Size = 18 & cell.Font.Color = vbRed
        End If

        If cell.Value >= 0 And cell.Value <= 500 Then
            cell.Font.Bold = True & cell.Font.Italic = True
            cell.Font.Underline = True
        End If

        If cell.Value > 500 And cell.Value <= 1000 Then
            cell.Font.FontStyle = "Monotype Corsiva"
            cell.Font.Color = vbBlue
            cell.Font.Underline = xlUnderlineStyleDouble
        End If

        If cell.Value > 1000 Then
            cell.Font.FontStyle = "Arial"
            cell.Font.Bold = True
            cell.Font.Italic = True
            cell.Interior.Color = vbGreen
            cell.Font.Color = vbWhite
        End If
Next cell