Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA из VB6 / 2 сообщений из 2, страница 1 из 1
25.05.2009, 16:22:21
    #36005964
Pervert
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA из VB6
Есть процедура кторы массив данных выводит в ексель и там пытается отсортировать, но при этом
дойдя то этого места
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
25.05.2009, 16:43:13
    #36006023
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA из VB6
в конкретном случае может и не поможет, но в строку с .Sort нужно обязательно добавить параметр Header, здесь
Код: plaintext
Header:=xlNo
этот параметр, как и Order1, 2, 3 глобальный, что дла бейсика, что для Екселя, т.е. он сохраняется от любой предыдущей сортировки, что программной, что ручной и его отсутствие может менять результат сортировки от выполнения к выполнению, в зависимости, что делалось в Екселе до этого.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA из VB6 / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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