powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA из VB6
2 сообщений из 2, страница 1 из 1
VBA из VB6
    #36005964
Pervert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть процедура кторы массив данных выводит в ексель и там пытается отсортировать, но при этом
дойдя то этого места
oSheet.Range("A5:I" + Trim(str(GridEX1.ItemCount + 4))).Sort Key1:=oSheet.Range("B5"), Order1:=xlAscending

ругается "Метод Sort Из класса Range завершен неверно, что не так ????


Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
Dim toprint As Variant
Dim days As Integer


Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Add

ReDim toprint(0 To GridEX1.ItemCount, 1 To 9)
days = (DatePicker2 - DatePicker1) + 1

'For i = 1 To GridEX1.ItemCount
' GridEX1.Row = i
' toprint(i, 1) = GridEX1.value(1)
' toprint(i, 2) = Round(GridEX1.value(2), 2)
' toprint(i, 3) = Round(GridEX1.value(4), 2)
' toprint(i, 4) = Round(GridEX1.value(3), 2)
' toprint(i, 5) = Round(GridEX1.value(8), 2)
' toprint(i, 6) = Round(GridEX1.value(7), 2)
' toprint(i, 7) = Round(GridEX1.value(5), 2)
' toprint(i, 8) = Round(GridEX1.value(6), 2)
' toprint(i, 9) = Round(GridEX1.value(9), 2)
'Next i



For i = 0 To GridEX1.ItemCount - 1
toprint(i, 1) = arBonus(1, i) ' тип строка
toprint(i, 2) = Round(arBonus(2, i))
toprint(i, 3) = Round(arBonus(4, i), 2)
toprint(i, 4) = Round(arBonus(3, i), 2)
toprint(i, 5) = Round(arBonus(8, i), 2)
toprint(i, 6) = Round(arBonus(7, i), 2)
toprint(i, 7) = Round(arBonus(5, i), 2)
toprint(i, 8) = Round(arBonus(6, i), 2)
toprint(i, 9) = Round(arBonus(12, i), 2)
Next i




'Добавить заголовки в строку 1, 2
Set oSheet = oBook.Worksheets(1)

oSheet.Cells(1, 1).value = "Магазин " + Combo1.Text
oSheet.Cells(2, 1).value = "За период c " + str(DatePicker1.value) + " по " + str(DatePicker2.value)

' массив загоняем
oSheet.Range("A4").Resize(GridEX1.ItemCount, 9).value = toprint

' шапку рисуем
oSheet.Range("A4:I4").value = Array("Наименование", "Продажи шт", "Продажи Р", "Продажи З", "Приб руб", "Приб %", "Остаток шт", "Остаток З", "Запас в днях")

' фоматируем шапки жирная
oSheet.Range("A1", "I4").Font.Bold = True
' фоматируем ячйки дипазона и шапки
oSheet.Range("A4", "I4").Resize(GridEX1.ItemCount, 9).Borders.LineStyle = 1
oSheet.Range("A1", "A1").ColumnWidth = 55
oSheet.Range("B1", "B1").ColumnWidth = 11
oSheet.Range("C1", "I1").ColumnWidth = 12


oSheet.Range("A5:I" + Trim(str(GridEX1.ItemCount + 4))).Sort Key1:=oSheet.Range("B5"), Order1:=xlAscending


'Форумалы итого
oSheet.Range("B" + Trim(GridEX1.ItemCount + 4)).FormulaLocal = "=СУММ(B5:B" + Trim(str(GridEX1.ItemCount + 3)) + ")"
oSheet.Range("C" + Trim(GridEX1.ItemCount + 4)).FormulaLocal = "=СУММ(C5:C" + Trim(str(GridEX1.ItemCount + 3)) + ")"
oSheet.Range("D" + Trim(GridEX1.ItemCount + 4)).FormulaLocal = "=СУММ(D5:D" + Trim(str(GridEX1.ItemCount + 3)) + ")"
oSheet.Range("E" + Trim(GridEX1.ItemCount + 4)).FormulaLocal = "=СУММ(E5:E" + Trim(str(GridEX1.ItemCount + 3)) + ")"
oSheet.Range("F" + Trim(GridEX1.ItemCount + 4)).FormulaLocal = "=E" + Trim(str(GridEX1.ItemCount + 4)) + "/D" + Trim(str(GridEX1.ItemCount + 4)) + "*100"
oSheet.Range("G" + Trim(GridEX1.ItemCount + 4)).FormulaLocal = "=СУММ(G5:G" + Trim(str(GridEX1.ItemCount + 3)) + ")"
oSheet.Range("H" + Trim(GridEX1.ItemCount + 4)).FormulaLocal = "=СУММ(H5:H" + Trim(str(GridEX1.ItemCount + 3)) + ")"
oSheet.Range("I" + Trim(GridEX1.ItemCount + 4)).FormulaLocal = "=H" + Trim(str(GridEX1.ItemCount + 4)) + "/C" + Trim(str(GridEX1.ItemCount + 4)) + "*" + Trim(str(days))

' числовой формат вывода ячейки
oSheet.Range("B4", "I4").Resize(GridEX1.ItemCount + 1, 9).NumberFormat = "# ##0.00"
oExcel.Visible = True
...
Рейтинг: 0 / 0
VBA из VB6
    #36006023
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в конкретном случае может и не поможет, но в строку с .Sort нужно обязательно добавить параметр Header, здесь
Код: plaintext
Header:=xlNo
этот параметр, как и Order1, 2, 3 глобальный, что дла бейсика, что для Екселя, т.е. он сохраняется от любой предыдущей сортировки, что программной, что ручной и его отсутствие может менять результат сортировки от выполнения к выполнению, в зависимости, что делалось в Екселе до этого.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA из VB6
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]