2016-07-05 6 views
0

У меня есть два листа Excel, в которых 6 из 30 столбцов имеют в них базы данных. Все они используют тот же код, что и ниже.Excel Databar не отображает

Но два столбца на одном из листов не отображают данные. Когда я смотрю на «Правила управления в условном форматировании», я вижу там база данных.

Затем я создаю несколько файлов с этого листа на основе разных сортов - продукта, региона и т. Д., И эти файлы также непоследовательно не показывают базу данных.

Я использую Excel 2010 32-разрядную версию для Windows 7 64-бит.

Что я делаю неправильно? Заранее спасибо за вашу помощь.

Public Function formatDatabar(wbkO As Workbook, wks As Worksheet, colNo As Integer) 

Dim i As Integer, ctr As Integer, col As Integer 

wbkO.Activate 
Set wks = wbkO.Worksheets(wks.Name) 
wks.Activate 
ctr = findLastRow(wks.Name) 
col = findLastCol(wks.Name) 

wbkO.Activate 
wks.Activate 
wks.Range(wks.Cells(5, 1), wks.Cells(ctr, col)).Select 

With Selection 
    .Cells.Font.Size = "8" 
    .Cells.Font.Bold = False 
    .Cells.Font.Name = "Calibri" 
    .VerticalAlignment = xlCenter 
End With 

wks.Range(wks.Cells(5, colNo), wks.Cells(ctr, colNo)).Select 

Selection.FormatConditions.AddDatabar 
Selection.FormatConditions(Selection.FormatConditions.Count).ShowValue = True 
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 
With Selection.FormatConditions(1) 
    .MinPoint.Modify newtype:=xlConditionValueAutomaticMin 
    .MaxPoint.Modify newtype:=xlConditionValueAutomaticMax 
End With 
With Selection.FormatConditions(1).BarColor 
    .ThemeColor = xlThemeColorAccent6 
    .TintAndShade = 0.13012579 
End With 
Selection.FormatConditions(1).BarFillType = xlDataBarFillGradient 
Selection.FormatConditions(1).Direction = xlContext 
Selection.FormatConditions(1).NegativeBarFormat.ColorType = xlDataBarColor 
Selection.FormatConditions(1).BarBorder.Type = xlDataBarBorderSolid 
Selection.FormatConditions(1).NegativeBarFormat.BorderColorType = _ 
    xlDataBarColor 
With Selection.FormatConditions(1).BarBorder.Color 
    .ThemeColor = xlThemeColorAccent6 
    .TintAndShade = 0.13012579 
End With 
Selection.FormatConditions(1).AxisPosition = xlDataBarAxisAutomatic 
With Selection.FormatConditions(1).AxisColor 
    .Color = 0 
    .TintAndShade = 0 
End With 
With Selection.FormatConditions(1).NegativeBarFormat.Color 
    .Color = 255 
    .TintAndShade = 0 
End With 
With Selection.FormatConditions(1).NegativeBarFormat.BorderColor 
    .Color = 255 
    .TintAndShade = 0 
End With 

End Function

+0

1) [Избегайте использования Select] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) для стартеров. 2) У вас нет функции. У вас есть суб. Функции возвращают значения (в некотором роде). 3) Я подозреваю, что проблема может быть в коде, который вызывает эту функцию, для каждой ячейки, но трудно сказать наверняка по очевидным причинам. –

+0

Вызывающая функция форматирует различные столбцы, а затем вызывает это. Call formatDatabar (wbkO, wks, 35) – user3150378

+0

И я изменил выбор на полностью квалифицированный справочник по дальности, и он все еще не работает. Я должен использовать ссылку на диапазон, а не цикл для каждой ячейки, чтобы иметь относительный размер базы данных. Вызывающий метод также позволяет форматировать все форматирование перед запуском. В любом случае, я не думаю, что должна быть проблема с остаточным форматированием, так как лист удаляется и воссоздается каждый раз, а данные заполняются из исходного кода. – user3150378

ответ

0

В 2472nd ряду,% была очень высокой, что все остальные почти ничего. Это привело к тому, что база данных всех остальных строк не отображалась.

С благодарностью Скотт за вашу помощь.

Смежные вопросы