|
|
|
| Выгружаю его в OpenOffice
Потом загружаю его обратно
Группа товаров - выглядит как объединение нескольких ячеек в строке
а товары там несколько отдельных ячеек в строке
наименование, цена, количество
=================================
Как же при загрузке отличить строку группы от строки товар????
Поле идентификатор не хочу вносить - из за шаловливых рук пользователей | |
|
| |
|
|
|
| у вас ячейка в группе пустая
ну - у товара есть цена и даже если она не прописана то она (цена) равна 0,00
а у группы эта ячейка пустая
вот и ловите ее
(во второй строке - где дата точки кажется лишние)
Добавлено
или же ориентируйтесь по цвету ячейки (у Вас группы покрашены в голубенький цвет) | |
|
| |
|
53 Кб. |
|
| Спасибо за совет!!!
группы могут перекрасить
при вводевручную новой строки
цену фолочи могут не поставить..
хотя можно строго настрого приказать....нооо | |
|
| |
|
|
|
| это они могут
пусть красят группы в любой цвет кроме белого
сравнивать с номером белого если белый то не группа
Добавлено
при загрузке двигаться по столбцу названий и спрашивать имена ячеек если просто ячейка то товар а если диапазон то группа
я имел в виду как у Экселя Cells(1,1).Address | |
|
| |
|
|
|
| даа, спасибки....
я так и хотел, но не знаю как в Опене отличить диапазон от недиапазон вот в чем вопросон..... | |
|
| |
|
|
|
| пока нашёл вот что Свойство Merge объектов Cell и CellRange, оно read-write.
теперь - как этим воспользоваться
При выполнении Delphi выдает ошибку о несовпадении типов
If OC.Sheets[0].Cell[i,j].Merge Then
Begin
|
| |
|
| |
|
|
|
| merge - это объединить- команда к исполнению
а вам нужно получить свойство
по этому if в данном случае не пролезет
(опен офиса я не знаю - по этому могу только предполагать )
вот если бы можно было получить имя (адрес) выделенного диапазона (ячейки) все бы упростилось | |
|
| |
|
|
|
| Да, но
Merge объектов Cell и CellRange, оно
| |
|
| |
|
|
|
| Час - уважаемый
не зацикливаетесь на одной функции merge
есть другие свойства | |
|
| |
|
|
|
| Спасибки!!!!
БУМ искать........
чё та кроме нас никто не присоединился
С опенофисом - мало хто дружит - однако........ | |
|
| |
|
|
|
| в опене всё наподобеее тока вот так
Dim nEndCol As Integer
Dim oCursor As Object
Dim aAddress As Variant
Set OOO_Range = OOO_Sheet.getCellRangeByName("A1:A1")
Set oCursor = OOO_Sheet.createCursorByRange(OOO_Range)
oCursor.GotoEndOfUsedArea (True)
Set aAddress = oCursor.RangeAddress
почемутта всегда 8 показывет
nEndCol = aAddress.EndColumn | |
|
| |
|
|
|
|
| Чета мне кажется что вот так должно быть
Set OOO_Range = OOO_Sheet.getCellByPosition(0, 0)
Set aAddress = OOO_Range.RangeAddress
Это к сообщению в 20:27 | |
|
| |
|
|
|
| Даа так и есть
Dim aAddress As Variant
Set OOO_Range = OOO_Sheet.getCellByPosition(0, 4)
Set aAddress = OOO_Range.RangeAddress
MsgBox aAddress.EndColumn
|
ответ 4 | |
|
| |
|
|
|
| Ну вот и здорово....
теперь когда есть диапазон
достаточно (возможно что достаточно) выдернуть последние символы текстовой строки (т.е. получить номер последнего столбца диапазона) и радостно сравнить его с образцом и если да то счастливо предположить чо енто ячейка обозначает группу | |
|
| |
|
|
|
| Как Вы ето себе представляете в плане кода???? | |
|
| |
|
25 Кб. |
|
| Ну если на екселе то вот так | |
|
| |
|
|
|
|
Sub Макрос1()
' Макрос1 Макрос
' Макрос записан 22.12.2009 (Snipe)
Dim asd As String
For i = 1 To 40
Cells(i, 1).Select
asd = Selection.Address
If InStr(1, asd, ":") > 0 Then
If Mid(asd, InStr(1, asd, ":") + 2, 1) = "G" Then
Cells(i, 8) = "Группа"
Else
Cells(i, 8) = "Какой-то мудак объединил ячейки"
End If
End If
Next i
Cells(1, 1).Select
End Sub
|
только двоеточий на листе я не нашёл | |
|
| |
|
|
|
| час - там изначально было другое слово | |
|
| |
|
|
|
| address возвращает имя ячейки или имя диапазона ячеек
хитрость в том что при обращении через Cells т.е якобы обращаемся к одной ячейке
однако если ячейки объединены то при выделении (select) выделяется не одна ячейка к которой обращаемся а диапазон объединенных ячеек
(для примера имеем диапазон Range("A1:g1") если обратиться Cells(1.1).address то получим "A1" а если сначала Cells(1,1).Select а а потом Selection.Address то получим $A$1:$G$1
вот это : я и ловил)
однако все это справедливо для Excel | |
|
| |
|
|
|
| Спасибо!!!!
Бум посмотреть........ | |
|
| |
|
|
|
|
Скопировал - как есть | |
|
| |
|