Панель данных условного форматирования VBA "Percent / Progress" - PullRequest
0 голосов
/ 28 июня 2018

В основном я пытаюсь сделать это:

https://imgur.com/a/OEhsWaS

(три картинки)

Итак, я записал макрос (с намерением очистить его позже!). Я хочу, чтобы панель данных ячейки по существу была размером с процент, который находится в ячейке.

Я получаю это как запись.

Range("H439:H445").Select
Selection.FormatConditions.AddDatabar
Selection.FormatConditions(Selection.FormatConditions.Count).ShowValue = True
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1)
    .MinPoint.Modify newtype:=xlConditionValueLowestValue
    .MaxPoint.Modify newtype:=xlConditionValueHighestValue
End With
With Selection.FormatConditions(1).BarColor
    .Color = 49407
    .TintAndShade = 0
End With
Selection.FormatConditions(1).BarFillType = xlDataBarFillSolid
Selection.FormatConditions(1).Direction = xlContext
Selection.FormatConditions(1).NegativeBarFormat.ColorType = xlDataBarColor
Selection.FormatConditions(1).BarBorder.Type = xlDataBarBorderNone
With Selection.FormatConditions(1).NegativeBarFormat.Color
    .Color = 255
    .TintAndShade = 0
End With

Я получил этот код несколько раз из записи, но после поиска ответов я понял, что это ошибка Excel или проблема / ошибка. Однако я чувствую, что моя проблема - это часть xlConditionValueHighestValue (и самая низкая). Другая часть записанного кода показывает xlAutomaticMax / xlAutomaticMin на своем месте.

Когда я запускаю одну часть кода (опубликованную часть), он не заполняется в зависимости от введенного макс / мин значения (1, 0). Вместо этого он берет наибольшее число (в данном случае 33%) и заполняет эту ячейку полностью. Когда я изменяю эту часть на:

With Selection.FormatConditions(1)
       .MinPoint.Modify newtype:=0
       .MaxPoint.Modify newtype:=1
    End With   

Я получаю «Ошибка времени выполнения« 1004 »: Ошибка приложения или объекта » что подчеркивает

.MaxPoint.Modify newtype:=1

строка, поэтому ей нравится строка 0. Однако я не знаю правильной процедуры кодирования, чтобы заставить ее делать то, что я хочу, и я не нашел ничего на форумах, где используется строка формулы maxpoint или minpoint, иначе я бы попытался скопировать их обозначения. Кто-нибудь знает, как помочь?

1 Ответ

0 голосов
/ 28 июня 2018

Пожалуйста, попробуйте:

 With Selection.FormatConditions(1)
        .MinPoint.Modify newtype:=xlConditionValueNumber, newvalue:=0
        .MaxPoint.Modify newtype:=xlConditionValueNumber, newvalue:=1
 End With

В качестве альтернативы вы можете придерживаться того, что у вас есть, но включать скрытую строку со значением 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...