Подсчитать последние оставшиеся пустые строки области печати - PullRequest
0 голосов
/ 12 марта 2020

Я ищу код VBA для Excel, который мог бы подсчитать последние оставшиеся строки страницы области печати (альбомная) и решить, достаточно ли доступно строк или нет, чтобы скопировать / вставить текст из другой рабочей таблицы в активную рабочую таблицу. .

Например:

У меня есть шаблон счета в Excel. Счет-фактура заканчивается Grand Total в самом конце. Я хотел бы добавить свою политику Условия после пробела в одну пустую строку каждый раз под Общая сумма . My T & C состоит из трех абзацев, которые находятся в объединенной ячейке, занимающей пространство 14 строк.

Счет-фактура может go на любое количество страниц, мое требование: на любой последней странице Общая сумма должно быть пространство под 16 строками, по крайней мере доступное под ней. скопировать / вставить T & C, если столько строк недоступно, тогда T & C следует автоматически переместить на следующую страницу. По сути, я не хочу, чтобы T & C наполовину печатался на двух отдельных страницах. У меня есть T & C на отдельном рабочем листе, который мне нужно скопировать / вставить на активный рабочий лист, т.е. на лист счета-фактуры под Grand Total . Я надеюсь, что все имеет смысл.

Вот демонстрационное видео того, что я ищу. Любая помощь будет принята с благодарностью. Заранее спасибо.

https://imgur.com/CP5Q7RL

1 Ответ

1 голос
/ 12 марта 2020

Попробуйте

Sub test()
    Dim Ws As Worksheet, Ws2 As Worksheet
    Dim Target As Range
    Dim myRow As Integer
    Dim cnt As Integer, r As Long, n As Integer

    cnt = 34 '<~~  Sheet 1 page rows count + 1
    Set Ws = Sheets(1)
    Set Ws2 = Sheets(2)
    With Ws
        Set Target = .Cells.Find("Grand Total")
        n = .HPageBreaks.Count
        r = (n + 1) * cnt
        If r - Target.Row > 16 Then
            myRow = Target.Row + 2
        Else
            myRow = r
        End If
        Ws2.Range("a1").MergeArea.Copy .Range("a" & myRow)
    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...