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-Key: 131224

Url: https://administrator.de/contentid/131224

Printed on: April 19, 2024 at 23:04 o'clock

Member: Snowman25
Snowman25 Dec 08, 2009 at 13:26:50 (UTC)
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
Member: TheEternalPhenom
TheEternalPhenom Dec 08, 2009 at 14:18:43 (UTC)
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.
Member: brotherkeeper
brotherkeeper Dec 09, 2009 at 07:19:19 (UTC)
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
Member: Snowman25
Snowman25 Dec 09, 2009 at 09:07:40 (UTC)
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
Member: brotherkeeper
brotherkeeper Dec 09, 2009, updated at Oct 18, 2012 at 16:40:16 (UTC)
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
Member: Snowman25
Snowman25 Dec 09, 2009 at 11:23:06 (UTC)
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
Member: brotherkeeper
brotherkeeper Dec 09, 2009 at 11:36:04 (UTC)
Goto Top
wo sage ich dem code in welchem bereich er das machen soll? Spalet/Zeile...
Member: Snowman25
Snowman25 Dec 09, 2009 at 11:53:43 (UTC)
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!
Member: TheEternalPhenom
TheEternalPhenom Dec 09, 2009 at 11:57:19 (UTC)
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.
Member: Snowman25
Snowman25 Dec 09, 2009 at 12:14:27 (UTC)
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
Member: TheEternalPhenom
TheEternalPhenom Dec 09, 2009 at 13:39:45 (UTC)
Goto Top
Sorry war beim schreiben nicht ganz dabei.

Ich meinte natürlich andere Tabellenblätter.
Member: brotherkeeper
brotherkeeper Dec 09, 2009, updated at Oct 18, 2012 at 16:40:16 (UTC)
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)...
Member: Snowman25
Snowman25 Dec 09, 2009 at 13:48:08 (UTC)
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
Member: TheEternalPhenom
TheEternalPhenom Dec 09, 2009 at 14:01:32 (UTC)
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.