Форум по VBA и MS Office

Word => Макросы в Word => Тема начата: Посетитель от 05 августа 2023, 13:29

Название: Максимальное значение параметра NumRows метода Split
Отправлено: Посетитель от 05 августа 2023, 13:29
Коллеги, подскажите пожалуйста, как узнать максимально возможное значение параметра NumRows метода Selection.Cells.Split.

Хотелось бы упростить и, наверняка, ускорить код, который сейчас работает через on error:
Sub Макрос1()
'
' Макрос1 Макрос
'
'
    Dim i As Integer
    i = 30
    While i > 2
    On Error GoTo handle_error
    Selection.Cells.Split NumRows:=i, NumColumns:=1, MergeBeforeSplit:=False
    GoTo lbl_next
handle_error:
On Error GoTo -1
    i = i - 1
lbl_next:
    Wend
    On Error GoTo -1
   
End Sub
Sub Макрос2()
'
' Макрос2 Макрос
'
'
    Application.Run MacroName:="Макрос1"
    Selection.MoveRight Unit:=wdCell
    Selection.MoveRight Unit:=wdCell
    Application.Run MacroName:="Макрос1"
End Sub
Название: Максимальное значение параметра NumRows метода Split
Отправлено: Администратор от 05 августа 2023, 14:14
Перед запуском макроса что выделено в таблице:?
одна ячейка
несколько ячеек
Название: Максимальное значение параметра NumRows метода Split
Отправлено: Посетитель от 05 августа 2023, 14:29
Перед запуском выделена одна ячейка.
Мне надо разделить ячейку на максимально возможное количество строк, как это делает команда "Разделить ячейки" из ленты "Макет".
Количество объединенных строк от ячейки к ячейке меняется. Диалог "Разбиение ячеек", очевидно, "знает" это максимальное количество, но мне это значение надо получить в макросе.
Название: Максимальное значение параметра NumRows метода Split
Отправлено: Администратор от 05 августа 2023, 14:33
Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Предположительно можно разбить на 22 строки.
Я запустил этот макрос и получил ошибку (см. скриншот):
Sub Макрос()
    Selection.Cells.Split 100, 1, False
End Sub

Есть нестыковка между макросом и самим Вордом.
Макрос выдал сообщение, в нём указано 22.
Но если попытаться разбить ячейку в самом Ворде, указав 100, то в сообщении будет указано 11.
Значит максимально можно разбить на 11 строк.
Название: Максимальное значение параметра NumRows метода Split
Отправлено: Администратор от 05 августа 2023, 14:37
Добавил пояснение в предыдущий ответ.
Название: Максимальное значение параметра NumRows метода Split
Отправлено: Посетитель от 05 августа 2023, 15:30
Решение найдено:

Sub Макрос3()
'
' Макрос3 Макрос
'
'
Dim rows As Integer
Dim cr As Range
Set cr = Selection.Cells(1).Range
Selection.Cells(1).Select
Selection.SelectRow
rows = Selection.Information(wdEndOfRangeRowNumber) - Selection.Information(wdStartOfRangeRowNumber) + 1
cr.Select
Selection.Cells(1).Split NumRows:=rows
End Sub