Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Expand
titleРазвернуть текст макроса


Code Block
languagevb
firstline1
titleМакрос
###DECLARE###  
    Public Type GroupLevel
        ColIndex As Integer 'номер колонки, в которой указано название группы
        InterColor As Long 'цвет ячейки
        IsBold As Integer '1 - жирный 0 - нет
        IsItalic As Integer '1 - курсив 0 - нет
        FontName As String 'название шрифта
        FontColor As Long 'цвет шрифта
        FontSize As Long 'размер шрифта
        Indent As Integer 'отступ
		IsUnderline As Integer 'подчеркнут
    End Type  
###DECLARE###      
    'Укажите после "To" количество уровней группировки,
    '3 (три) означет что у группы есть подгруппы и у подгруппы есть еще вложенные подгруппы
    Const lvlCount = 3
	
    Dim i, j, clmnPriceIndex, clmnOutIndex, rowFirstData As Integer
    
    'Укажите номер колонки, в которой указана цена товара
    clmnPriceIndex = 60
    
    'Укажите номер колонки, в которую будет помещен результат
    clmnOutIndex = 200
    
    'Укажите номер первой строки с данными
    rowFirstData = 100
    
    Dim GroupLevels(1 To lvlCount) As GroupLevel

    'Укажите настройки для каждого уровня,   пример:
 GroupLevels(1).ColIndex = 1
  2
 GroupLevels(1).InterColor = 011842740
    GroupLevels(1).IsBold = 01
    GroupLevels(1).IsItalic = 0
   1
GroupLevels(1).IsUnderline = -4142
GroupLevels(1).FontName = "Arial"
    GroupLevels(1).FontColor = 0
 
  GroupLevels(1).FontSize = 1                        
    9
GroupLevels(1).Indent = 0   
    

   'GroupLevels(2).ColIndex = 12
    'GroupLevels(2).InterColor = 0
   12829635
'GroupLevels(2).IsBold = 0
    '1
GroupLevels(2).IsItalic = 0
    '1
GroupLevels(2).IsUnderline = -4142
GroupLevels(2).FontName = "Arial"
   
'GroupLevels(2).FontColor = 0
GroupLevels(2).FontSize = 9
 'GroupLevels(2).Indent = 0
    

    
    For i = rowFirstData To ActiveSheet.UsedRange.Rows.Count
        If ActiveSheet.Cells(i, clmnPriceIndex).Value = "" Then
            For j = 1 To lvlCount
                Set cel = ActiveSheet.Cells(i, GroupLevels(j).ColIndex)
                
                If (cel.Interior.Color = GroupLevels(j).InterColor) And _
                    ((-1) * CInt(cel.Font.Bold) = GroupLevels(j).IsBold) And _
                    ((-1) * CInt(cel.Font.Italic) = GroupLevels(j).IsItalic) And _
                    (cel.Font.Name = GroupLevels(j).FontName) And _
                    (cel.Font.Color = GroupLevels(j).FontColor) And _
                    (cel.Font.Size = GroupLevels(j).FontSize) And _                    
                    (cel.IndentLevel = GroupLevels(j).Indent) Then
                        
                       ActiveSheet.Cells(i, clmnOutIndex).Value = j
                       Exit For
                End If
            Next j
        End If
    Next i

 



Вам так же понадобится этот файл, для определения форматирования в ячейках, скачайте его себе:

...

Количество уровней групп, которые собираетесь загружать из прайса

Image RemovedImage Added


Номер колонки в которой цена товара

...

Дальше нужно для каждого уровня группировки указать блок, описывающий форматирование этого уровня в прайсе. То, что указано для примера ниже, можно удалить.

Image RemovedImage Added

Блоки эти нужно брать из файла "Проверка формата ячейки"

...

в результате получим код, который нужно скопировать в макрос для прайса:


Копируем код вместо того, который был в макросе:

Image Added


Аналогично делаем для второго и третьего уровней.

Image Added


Image Added


Для каждого уровня указываем номер колонки, в которой указано название группы этого уровня (в примере это колонка B, указывается номер 2)

Image Added


Вот здесь должен быть указан уровень, разный в каждом блоке

Image Added



Полученный результат копируется в настройку прайса

Image Added


3. В настройке прайса указываются колонки "Название группы" и "Название выш. гр." - в моем примере одна и та же колонка B, в которой находятся группы в прайсе.

Указываем так же поле "Код вышестоящей группы" - это та колонка, в которую в макросе указали помещать номер уровня группы (20-ая колонка)

Image Added


Устанавливаем птичку "Загружать дерево категорий"

Image Added


Загружать группу по наименованию + птичка Группа в отдельной строке

Image Added


Сохраняем настройки и пробуем загрузить. В моем примере получились такие настройки:

Image Added