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. ;)
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, 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, 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ół.
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.
źródło