Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Αυτόματο ύψος γραμμής (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/6341-aytomato-ipsos-grammis.html)

Immortal 24-06-23 12:17

Αυτόματο ύψος γραμμής
 
1 Συνημμένο(α)
Γεια σας φίλοι του φόρουμ, πιστεύω να είστε καλά.
Στο συνημμένο έχω κάποιες στήλες σε συγχώνευση και έχω περιεχόμενο.
Θα εισαχθούν συναρτήσεις όπου θα επιστρέφουν κάποιο κείμενο, το οποίο μπορεί να καταλαμβάνει 1 και παραπάνω σειρές κάθε φορά. Θα μπορούσε με κάποιο τρόπο, εφόσον υπάρχει κείμενο να τροποποιηθεί αυτόματα το ύψος της γραμμής;
Κάνω αναδίπλωση κειμένου χειροκίνητα και διπλό κλικ στο σημείο της γραμμής ώστε να πάρει το ανάλογο ύψος αλλά δεν ανοίγει.

Tasos 27-06-23 08:51

1 Συνημμένο(α)
Καλημέρα σε όλους.
Φίλε Νίκο, δε γνωρίζω κάποια μέθοδο που να τροποποιεί αυτόματα το ύψος της γραμμής σε περιοχή συγχωνευμένων κελιών.

Ωστόσο αν δεν μπορούμε να αποφύγουμε τα συγχωνευμένα κελιά, μπορούμε να κάνουμε τα εξής:

Δημιουργούμε ένα φύλλο εργασίας, με όνομα κλάσης "ShData" και δίνουμε στο πρώτο κελί του (Α1) το όνομα "HelpCell".
Μπορούμε να κρύψουμε το φύλλο αυτό αφού προηγουμένως φροντίσουμε η μορφοποίηση του κελιού "HelpCell" να είναι η ίδια με αυτή των περιοχών με τα συγχωνευμένα κελιά.

Κατόπιν σε μια νέα λειτουργική μονάδα (Module) αντιγράφουμε τον παρακάτω κώδικα:

Κώδικας:

Option Explicit

Sub SetRowHeight()
    Dim colWidth As Integer
    Dim oRange As Range
    Dim oCell  As Range
    Dim MergedCell As Range
    Dim HelpCell As Range

    Set HelpCell = Range("HelpCell")
    Set oRange = ShData.Range("b2", ShData.Range("b" & Rows.Count).End(xlUp))
    Application.ScreenUpdating = False

    For Each oCell In oRange
        If oCell.MergeCells Then
            If colWidth = 0 Then
                For Each MergedCell In oCell.MergeArea
                    colWidth = colWidth + MergedCell.ColumnWidth
                Next
            End If
            If HelpCell.ColumnWidth <> colWidth Then
                HelpCell.ColumnWidth = colWidth
            End If
            HelpCell.Value = oCell.Value
            HelpCell.EntireRow.AutoFit
            oCell.RowHeight = HelpCell.RowHeight
        End If
    Next
End Sub

Αντιστοιχούμε τον κώδικα σε ένα κουμπί και εκτελούμε όποτε χρειαστεί για να οριστεί το ύψος των συγχωνευμένων κελιών στη στήλη Β:Β.

Τι κάνεις ο κώδικας;

Δίνει στο πλάτος του κελιού HelpCell την τιμή του συνολικού πλάτους των συγχωνευμένων κελιών.

Σε κάθε μια από τις συγχωνευμένες περιοχές στη στήλη Β:Β:
  • Αντιγράφει τα περιεχόμενα του πρώτου κελιού της συγχωνευμένης περιοχής (στην περίπτωση μας στη στήλη Β:Β) στο κελί HelpCell
  • Εκτελεί την εντολή: HelpCell.EntireRow.AutoFit. για να ρυθμιστεί εκ νέου το ύψος του κελιού HelpCell .
  • Ρυθμίζει το ύψος της γραμμής των συγχωνευμένων κελιών σύμφωνα με το ύψος τοτ βοηθητικού κελιού HelpCell

Δες ένα παράδειγμα στο συνημμένο.

Καλή συνέχεια.

Με εκτίμηση

Τάσος

Immortal 28-06-23 06:06

Καλήμερα!
Φίλε Τάσο σε ευχαριστώ πολύ για την πρόταση και τον χρονο που διέθεσες, θα προσαρμοσω το συνημμένο στο βιβλίο μου και θα επανελθω.


Η ώρα είναι 10:02.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2