Форматирование списка с несколькими диапазонами в формате валюты - PullRequest
2 голосов
/ 17 июня 2019

Я пытаюсь отформатировать второй столбец моего списка в формате валюты ("$ #, ## 0,00"), но сталкиваюсь с некоторыми проблемами. Любая помощь с благодарностью!

Вот некоторые данные теста:

data

Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Sheets("PivotTable")

Dim rng1 As Range
Dim LR1 As Long
LR1 = Range("A" & Rows.Count).End(xlUp).Row
Set rng1 = ws1.Range("A1:A" & LR1).SpecialCells(xlCellTypeVisible)

With Me.ListBox1
    .ColumnCount = 2
    .ColumnWidths = "120,100"

    For Each Cell In rng1
        .AddItem Format(Cell.Value, "$#,##0.00")
        .List(.ListCount - 1, 1) = Cell.Offset(0, 1).Value
        .List(.ListCount - 1, 2) = Cell.Offset(0, 2).Value 'Format this column        
    Next Cell
End With

Вот результат, который я получаю сейчас:

Error Result

1 Ответ

2 голосов
/ 17 июня 2019

Я думаю, что @TM прав.Попробуйте следующее:

For Each Cell In rng1

    .AddItem Cell.Value 'this is your first column
    .List(.ListCount - 1, 1) = Format(Cell.Offset(0, 1).Value, "$#,##0.00") 'this is your second one
    'you tried to format the 3rd one (which was not visible because of .ColumnCount = 2:
    '.List(.ListCount - 1, 2) = Cell.Offset(0, 2).Value 'Format this column
Next Cell

Объяснение:

.AddItem заполняет первый столбец.Подсчет столбцов в .List(row, column) начинается с 0, поэтому .AddItem заполненный столбец 0, что означает .List(.ListCount - 1, 1) ваш второй столбец (не первый).

...