Здравствуйте, уважаемые гуру VBA. Прошу помочь разобраться в следующей ситуации: При проведении инвентаризации возникла необходимость немного автоматизировать процесс. Из 1С выгружается кривая ведомость (во вложении). Графа №8 (статус объекта учета) делится на 3 столбца (AJ,AK,AL), графа №9 (целевая функция актива) на столбцы AM:AR, а одни должны быть едиными ячейками - как показано на листе "Как должно быть". Для того чтобы объединить столбцы в строках пишу макрос (пока только для графы №8):
Sub Rec() Dim i AsLong Dim j AsLong Dim k AsLong Dim myRange As Range Set myRange = Range("AJ41:AL500")
Application.DisplayAlerts = False
For k = 1To myRange.Areas.Count For i = 1To myRange.Areas(k).Rows.Count For j = 1To myRange.Areas(k).Columns.Count If myRange.Areas(k).Cells(j, i).Value = ""Then
myRange.Areas(k).Rows(i).Merge
myRange.Areas(k).Cells(i, 1).HorizontalAlignment = xlHAlignCenter EndIf Next Next Next
Application.DisplayAlerts = True EndSub
Но после его выполнения, слетает форматирование и в тех строках, которые не должны меняться. Подскажите пожалуйста, в чём ошибка?
На исходном листе нужные диапазоны выделил толстой границей.
Разрабатываемый макрос планируется встроить в другой макрос, который уже вносит изменения в инвентарные описи без их открытия (их больше 1000 шт):
Sub Макрос1()
Dim FilesToOpen Dim x AsInteger
Application.ScreenUpdating = False
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Microsoft Excel Files (*.xlsx), *.xlsx", _
MultiSelect:=True, Title:="Выберите файлы") IfTypeName(FilesToOpen) = "Boolean"Then
MsgBox "Не выбрано ни одного файла!" GoTo ExitHandler EndIf
x = 1
Application.Visible = False While x <= UBound(FilesToOpen)
Workbooks.Open Filename:=FilesToOpen(x)
Sheets(1).Range("BP17").Value = "10.06.2022"'на листе 1 в ячейку BP17 написать "Новая дата окончания"
Sheets(1).Range("AL1:AL1500").Replace What:="А. А. Корешков", Replacement:="А. А. Котов"
Sheets(1).Range("AJ41:AL41").Merge 'на листе 1 объединить ячейки AJ41:AL41
Sheets(1).Range("AM41:AR41").Merge 'на листе 1 объединить ячейки AM41:AR41
ActiveWorkbook.Close savechanges:=True
x = x + 1 Wend
Здравствуйте, уважаемые гуру VBA. Прошу помочь разобраться в следующей ситуации: При проведении инвентаризации возникла необходимость немного автоматизировать процесс. Из 1С выгружается кривая ведомость (во вложении). Графа №8 (статус объекта учета) делится на 3 столбца (AJ,AK,AL), графа №9 (целевая функция актива) на столбцы AM:AR, а одни должны быть едиными ячейками - как показано на листе "Как должно быть". Для того чтобы объединить столбцы в строках пишу макрос (пока только для графы №8):
Sub Rec() Dim i AsLong Dim j AsLong Dim k AsLong Dim myRange As Range Set myRange = Range("AJ41:AL500")
Application.DisplayAlerts = False
For k = 1To myRange.Areas.Count For i = 1To myRange.Areas(k).Rows.Count For j = 1To myRange.Areas(k).Columns.Count If myRange.Areas(k).Cells(j, i).Value = ""Then
myRange.Areas(k).Rows(i).Merge
myRange.Areas(k).Cells(i, 1).HorizontalAlignment = xlHAlignCenter EndIf Next Next Next
Application.DisplayAlerts = True EndSub
Но после его выполнения, слетает форматирование и в тех строках, которые не должны меняться. Подскажите пожалуйста, в чём ошибка?
На исходном листе нужные диапазоны выделил толстой границей.
Разрабатываемый макрос планируется встроить в другой макрос, который уже вносит изменения в инвентарные описи без их открытия (их больше 1000 шт):
Sub Макрос1()
Dim FilesToOpen Dim x AsInteger
Application.ScreenUpdating = False
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Microsoft Excel Files (*.xlsx), *.xlsx", _
MultiSelect:=True, Title:="Выберите файлы") IfTypeName(FilesToOpen) = "Boolean"Then
MsgBox "Не выбрано ни одного файла!" GoTo ExitHandler EndIf
x = 1
Application.Visible = False While x <= UBound(FilesToOpen)
Workbooks.Open Filename:=FilesToOpen(x)
Sheets(1).Range("BP17").Value = "10.06.2022"'на листе 1 в ячейку BP17 написать "Новая дата окончания"
Sheets(1).Range("AL1:AL1500").Replace What:="А. А. Корешков", Replacement:="А. А. Котов"
Sheets(1).Range("AJ41:AL41").Merge 'на листе 1 объединить ячейки AJ41:AL41
Sheets(1).Range("AM41:AR41").Merge 'на листе 1 объединить ячейки AM41:AR41
ActiveWorkbook.Close savechanges:=True
x = x + 1 Wend
Gestapovich, - Прочитайте Правила форума - Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь) Помогающим просьба воздержаться от ответов в этой теме до исправления замечания
Gestapovich, - Прочитайте Правила форума - Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь) Помогающим просьба воздержаться от ответов в этой теме до исправления замечаниякитин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852