Страницы: 1
RSS
Преобразование выгрузки из 1С в плоскую
 
Всем привет!
Пытаюсь использовать код господина Msi2102 из этой темы для преобразования выгрузки из 1с в плоскую таблицу, и в 365 офисе все ок, но коллеги запускали в 2013 и 2016 и он зависает на цикле 14-16 строчки

Код
Sub Макрос1()
Dim arr As Variant, arr1 As Variant, n As Long, m As Integer
arr1 = Selection.Columns("A:A")
ReDim arr(1 To UBound(arr1), 1 To 1)
Set Dict = CreateObject("System.Collections.ArrayList")
For Each r In Selection.Rows
    n = n + 1
    If Not Dict.contains(r.OutlineLevel) Then
        Dict.Add r.OutlineLevel
        If Dict.Count > 1 Then ReDim Preserve arr(1 To UBound(arr), 1 To UBound(arr, 2) + 1)
    End If
    arr(n, Dict.LastIndexOf(r.OutlineLevel) + 1) = arr1(n, 1)
    If Dict.LastIndexOf(r.OutlineLevel) + 1 > 1 And n > 1 Then
        For m = Dict.LastIndexOf(r.OutlineLevel) To 1 Step -1
            arr(n, m) = arr(n - 1, m)
        Next
    End If
Next
Columns(1).Resize(, Dict.Count).Insert Shift:=xlToRight
Selection(1).Resize(UBound(arr), UBound(arr, 2)).NumberFormat = "@"
Selection(1).Resize(UBound(arr), UBound(arr, 2)) = arr
End Sub
Изменено: evgeniygeo - 18.11.2022 20:36:24
 
Приветствую.
Проблем не обнаружено, если выбирать только диапазон с данными.
Добавьте заглушку от плохого юзверя.
Код
    For Each r In Selection.Rows
        n = n + 1
        If r.Cells(1, 1) = "" Then Exit For 'Заглушка от нерадивого юзера

        If Not Dict.contains(r.OutlineLevel) Then
 
Цитата
evgeniygeo написал:
код господина Msi2102
ну вот, дожили до господина😁😁😁
К сожалению в ближайшие время ни чем помочь не смогу, временно отсутствует доступ к компу.
Думаю господин doober, прав. Возможно есть смысл избавится от Selection
 
Цитата
Msi2102 написал:
господин  doober ,
Приветствую.
Господа в Париже :)
 
doober,
сделал, но, к сожалению, так и не взлетело, не стал заморачиваться и воспользовался другим примером по той же ссылке)))
 
Цитата
Msi2102 написал:
ну вот, дожили до господина😁😁😁
я помню, лет в 15, мне было крайне лестно и приятно, когда меня называли по имени и отчеству  :D
поэтому пусть это будет приятный оборот речи Господа :)

P.S. правда теперь работаю в компании, где в принципе отчества не используются  :D
Страницы: 1
Наверх