brotherkeeper
Goto Top

Per VBA die Zeilenhöhe optimieren

Ein kleine Frage zum Thema Formatierung...

Ich erstelle ein Art von Protokoll... In diesem werden verschiedene Informationen per Userform eingegeben... Nun passiert es, daß ein Eintrag in einer Zelle nicht reinpasst. die Zelle habe ich bereits mit dem Zusazt "Zeilenumbruch" versehen. Leider ist aber trotzdem nur die erste zeile lesbar. Da ich nun die Einträge per Userform eintrage, würde ich das modul gerne um einen befehl wie "passe zeilehöhe automatisch an" ergänzen... Wie würde dieser aussehen?

Ferner würde ich auch gerne bei jedem eintrag einzelne zellen der dann hinzugefügten zeile schützen/sperren (und eventuel per doppelklick wieder temporär beschreibbar machen)... Hat jemand hier ein idee wie...?

PS: freue mich meine mittlerweile gesammelten module bald hier publizieren zu können... face-wink

Content-ID: 131224

Url: https://administrator.de/forum/per-vba-die-zeilenhoehe-optimieren-131224.html

Ausgedruckt am: 24.12.2024 um 00:12 Uhr

Snowman25
Snowman25 08.12.2009 um 14:26:50 Uhr
Goto Top
Ich glaube, die AutoFit-Funktion ist das, was du suchst...
für dein 2. Problem benötigst du die Protection-Eigenschaft zusammen mit einem DblClick-Event
TheEternalPhenom
TheEternalPhenom 08.12.2009 um 15:18:43 Uhr
Goto Top
Um die funktion für die Zellen höhe zu bewerkstelligen kannst du einfach ein Makro aufnehmen und die dortigen Befehle nutzen.
Diese Methode ist zwar nicht die sauberste jedoch die schnellst.

Zum Zellen sperren hab ich ein ähnliches Makro welches momentan für Admins die gesamte Fläche entsperrt, für User die nur einen bestimmten Teil entsperrt und für Personen ohne Login die Mappe einfach schließt. Fallste interesse hast meld dich bitte mal per PM bei mir.
Das Script ist noch in Bearbeitung weswegen ich nur sehr ungerne ein halbfertiges Script hier poste.
brotherkeeper
brotherkeeper 09.12.2009 um 08:19:19 Uhr
Goto Top
@Snowman: hast du ein beispiel wie ich die genau einsetzen kann?

@duffman: liebend gerne... auch wenn es noch nicht ganz fertig ist... face-smile
Snowman25
Snowman25 09.12.2009 um 10:07:40 Uhr
Goto Top
Zitat von @brotherkeeper:
@Snowman: hast du ein beispiel wie ich die genau einsetzen kann?

  • Autofit * Passt die Höhe einer Zeile an die eingetragene Range an
Sheets("Eingabe").Range("b3").Rows.AutoFit  

  • Protection * lässt sich noch verbessern
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    ActiveSheet.Protect
    ActiveSheet.Protection.AllowEditRanges.Add _
        Title:="Titel2", _  
        Range:=Range("M11:S24")  
End Sub
brotherkeeper
brotherkeeper 09.12.2009, aktualisiert am 18.10.2012 um 18:40:16 Uhr
Goto Top
* Autofit * Passt die Höhe einer Zeile an die eingetragene Range an
Sheets("Eingabe").Range("b3").Rows.AutoFit  
wenn ich hier die range auf B3:B10 mache, passt er mir alle zelle in der gleichen Höhe an (an der größten zelle angelehnt)... Wie kann ich die range so anpassen, dass jeder zelle individuell angepasst wird?

und wie würde ich diesen code in den code "Daten eintragen" einfügen? Meine Anleitung
Snowman25
Snowman25 09.12.2009 um 12:23:06 Uhr
Goto Top
durchlaufe die reihen nacheinander in einer schleife, nicht alle zusammen
soll für dein Beispiel heißen:
Private Sub test()
    For i = 4 To 16
        Sheets("Ausgabe").Range(Cells(i, 4), Cells(i, 4)).Rows.AutoFit  
    Next i
End Sub
brotherkeeper
brotherkeeper 09.12.2009 um 12:36:04 Uhr
Goto Top
wo sage ich dem code in welchem bereich er das machen soll? Spalet/Zeile...
Snowman25
Snowman25 09.12.2009 um 12:53:43 Uhr
Goto Top
über die beiden Cells...
4 ist die Spalte (Column), i die Zeile (Row).Für autofit muss ja die Zeile angegeben sein, deswegen .Rows. Da wir aber mehrere Zeilen durchlaufen wollen, ändert die schleife immer den index der Zeile
beachte bitte, dass in diesem Format die Spalten numerisch angegeben werden. So entspricht 4 der spalte D.
Immer beide Cell-Werte ändern!
TheEternalPhenom
TheEternalPhenom 09.12.2009 um 12:57:19 Uhr
Goto Top
Mit noch einer weiteren Schleife kann man das ganze soweit umstellen, dass alle Zellen einer Tabelle angesteuert werden. Hier sollte man jedoch auf passen welches Office man benutzt.
Snowman25
Snowman25 09.12.2009 um 13:14:27 Uhr
Goto Top
Zitat von @TheEternalPhenom:
Mit noch einer weiteren Schleife kann man das ganze soweit umstellen, dass alle Zellen einer Tabelle angesteuert werden. Hier
sollte man jedoch auf passen welches Office man benutzt.

erm... wozu? es reicht, EINE zelle einer spalte anzusteuern, da die zellen rechts und links daneben sowieso die gleiche höhe annehmen
TheEternalPhenom
TheEternalPhenom 09.12.2009 um 14:39:45 Uhr
Goto Top
Sorry war beim schreiben nicht ganz dabei.

Ich meinte natürlich andere Tabellenblätter.
brotherkeeper
brotherkeeper 09.12.2009, aktualisiert am 18.10.2012 um 18:40:16 Uhr
Goto Top
könnt ihr mir bitte helfen das in den code zu implementieren? Meine Anleitung
Dann müsste ich nicht jedes mal die ganze tabelle berechnen (bei mehr als 10000 Datensätze dauert das zu lange)...
Snowman25
Snowman25 09.12.2009 um 14:48:08 Uhr
Goto Top
bevor ich dir den code anpasse, hätte ich gerne, dass du den 'Daten eintragen'-Abschnitt sortierst...
vom jetzigen kauderwelsch bekomm ich magenkrämpfe
TheEternalPhenom
TheEternalPhenom 09.12.2009 um 15:01:32 Uhr
Goto Top
1. Mal Ordnung reinbringen
und
2. Vllt mal nen Download-Link Posten wegen den Userformen

PS: Mein Sicherheits Programm werd ich dir dem nächst zukommen lassen ich wurde noch auf ne Lücke aufmerksam gemacht welche ich noch schließen möchte.