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