Pozwól Excelowi ustawić automatyczną wysokość wiersza dla x z góry ustalonego nie. rzędów na arkusz A4?

-1

Jestem europejskim użytkownikiem MS Excel 2010 i wpadłem na dziwny pomysł, który chcę np. 31 rzędów równomiernie rozłożone na całej długości jednego arkusza (tutaj: A4), oczywiście bez marginesów strony.

Czy jest jakiś sposób, aby to zrobić w programie Excel? Jeśli nie, jak obliczyć żądaną wysokość wiersza za pomocą kalkulatora? A może utworzyć szablon w programie Excel, aby obliczyć to dla programu Excel?

Wiem, że potrafiłbym pogrzebać tę drugą drogę razem z kilkoma ręcznymi obliczeniami, ale ponieważ już chciałem zadać to pytanie o zdolności Excelsa, mam nadzieję, że rozumiesz moją lenistwo. ;)

Dziękujemy za pomoc z góry!

grunwald2.0
źródło

Odpowiedzi:

0

Zakładając, że nie masz nic przeciwko używaniu VBA w arkuszu kalkulacyjnym, jest to możliwe. Po pierwsze, jeśli nie masz jeszcze karty Deweloper na Wstążce, przejdź do opcji Plik-> Opcje, Dostosuj wstążkę, a na panelu po prawej stronie zaznacz opcję Deweloper, a następnie kliknij przycisk OK. Następnie kliknij kartę Deweloper, a następnie Visual Basic. Po lewej stronie kliknij dwukrotnie ten skoroszyt i wklej poniższy kod. W razie potrzeby zmień konfigurację. Teraz, gdy klikniesz, aby zapisać skoroszyt, wiersze automatycznie dostosują się do określonych parametrów.

Warto zauważyć, że na stronie można zmieścić więcej niż 31 wierszy, pomimo obliczeń; przy użyciu zwykłych marginesów Excela i nagłówka / stopki, 34 wiersze pasują do strony. Zmiana marginesów i nagłówka / stopki na 0, 31 wierszy pasuje na stronie.

Z tego powodu sugeruję dwukrotne sprawdzenie za pomocą Podglądu wydruku i odpowiednie zmniejszenie RowsPerPage, jeśli masz więcej wierszy niż oczekiwano na stronę. Rozdzielczość Row Heights jest tak duża, więc niestety nie jest idealna. W każdym razie mam nadzieję, że to pomoże.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

        ' Configuration
        RowsPerPage = 31            ' number of rows per page, as stated in question
        NumberOfPages = 1           ' how many pages of data you have
        NumberOfSheets = 1          ' How many spreadsheets are in use

        TargetPageHeight = 29.7     ' A4 height in cm

        ' Don't change anything below here
        TargetPageHeight = Application.CentimetersToPoints(TargetPageHeight)
        TotalRowCount = NumberOfPages * RowsPerPage + 1 'Resize beyond the specified area so a smaller row doesn't sneak in
        For sheetIndex = 1 To NumberOfSheets
            AvailablePageHeight = TargetPageHeight
            With Worksheets(sheetIndex).PageSetup
                AvailablePageHeight = AvailablePageHeight - (.TopMargin + .BottomMargin + .HeaderMargin + .FooterMargin)
            End With
            OptimalRowHeight = AvailablePageHeight / RowsPerPage
            currentIndex = 1
            With Worksheets(sheetIndex)
                While currentIndex <= TotalRowCount
                    Rows(currentIndex).RowHeight = OptimalRowHeight
                    currentIndex = currentIndex + 1
                Wend
            End With
        Next sheetIndex

End Sub
stylez
źródło
stylez, dziękuję za obszerną odpowiedź! Na pewno przyjrzę się i przetestuję twoją próbkę VBA.
grunwald2.0
0

Możesz ustawić Excel tak, aby pokazywał obszar drukowania. Sprawdź wstążkę (Widok / układ strony) Następnie musisz wybrać wszystkie 31 wierszy i zmienić wysokość jednego z nich.

Amir Rezaei
źródło
Amir, dziękuję za komentarz, ale jak obliczyć odpowiednią wysokość wiersza lub „przeciągnij i upuść” na odpowiednią wysokość? Dodatkowo: kiedy ustawię „obszar drukowania”, to nie pomoże. Wyświetla go jako „obszar wydruku”, ale kiedy przejdę do podglądu wydruku, nie pasuje / skaluje! Plus (problem polega na tym, że mój Excel nie jest w języku angielskim!) Opcje skali w obszarze podglądu wydruku nie robią absolutnie nic! Próbowałem zobaczyć, że wybrałem jedną z nich, żadna nie pokazała żadnego ruchu ...
grunwald2.0
Właściwie teraz zrozumiałem, o co ci chodzi: mogę po prostu przeciągnąć i upuścić jeden z wybranych wierszy, zmieniając wysokość, ostrożnie przeciągając rząd w dół.
grunwald2.0