Zeilenumbruch bei Formelbezug

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Zeilenumbruch bei Formelbezug
von: Markus
Geschrieben am: 28.09.2003 21:29:12

Hallo Excel-Experten!

Habe eine Eingabe Zelle, z.B. A1 und möchte in einer anderen Zelle, z.B. A2 einen Text dargestellt bekommen, den ich in A1 vorgebe. Beide Zellen haben die Formatierung "Zeilenumbruch". Dabei möchte ich, dass die Zeile "2,2" einen Zeilenumbruch macht, wenn es durch die Vorgabe erforderlich ist.

Habe das mit folgender VBA versucht:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "A1" Then Exit Sub
Rows("2,2").EntireRow.AutoFit
End Sub


Den Code hat mir mal ein freundlicher Formumexperte gesagt und es hat für Testzwecke auch geklappt. Nochmal Danke! Jetzt mein Problem; die Eingabe Zelle und die Formelbezugszelle stehen in zwei unterschiedlichen Tabellbereichen. Mein Versuch mit den dazugehörigen Zellbezügen sieht dann so aus:

Code unter "Einzelelemente" eingefügt.


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "Eingabe!R6" Then Exit Sub
Rows("Einzelelemente!31,31").EntireRow.AutoFit
End Sub


... hat nicht geklappt ;-( weiß nicht was ich da falsch mache, aber Ihr habt bestimmt die Antwort.

Vielen Dank schonmal vorab!

Gruß Markus
Bild


Betrifft: AW: Zeilenumbruch bei Formelbezug
von: Jörg Gradert
Geschrieben am: 28.09.2003 22:00:41

Hallo Markus,
dieses Makro muss in das Codefenster von Tabelle "Eingabe" (Rechtsklick auf den Tabellenblattnamen)


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "R6" Then Exit Sub
Sheets("Einzelelemente").Rows("31,31").EntireRow.AutoFit
End Sub


Gruss Jörg


Bild


Betrifft: AW: Zeilenumbruch bei Formelbezug
von: Markus
Geschrieben am: 28.09.2003 22:18:04

Hi Jörg,

besten Dank! Aber wie funktioniert das denn, wenn ich mit dieser Eingabe zwei unterschiedliche Zeilen formatieren möchte?
Mein Versuch:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "R6" Then Exit Sub
Sheets("Einzelelemente").Rows("31,31").EntireRow.AutoFit
Sheets("Einzelelemente").Rows("51,51").EntireRow.AutoFit
End Sub


Dabei bewirkt Excel zwar bei 31,31 einen Zeilenumbruch, aber nicht bei 51,51!???

Gruß Markus


Bild


Betrifft: AW: Zeilenumbruch bei Formelbezug
von: Jörg Gradert
Geschrieben am: 28.09.2003 22:56:19

Hallo Markus,
steht denn in Zeile 51 auch ein Text mit Formel erzeugt, der nicht in die Zelle passt?
Ist diese Zelle auf Zeilenumbruch gesetzt?

Dein Versuch ist OK, das Makro wird immer dann ausgeführt, wenn in Tabelle "Eingabe" in die Zelle "R6" eine Eingabe gemacht wird.

Eingaben in andere Zellen bewirken gar nichts.

Lass mal die Zeile
If Target.Address(0, 0) <> "R6" Then Exit Sub
spasseshalber weg, dann wird das Makro bei jeder Änderung in Tabelle "Eingabe" aufgerufen.

Ist denke das ist nicht sinnvoll.
So kannst Du es schreiben, wenn weitere Eingabezellen das Makro auslösen sollen:
Hier mal als Beispiel Zelle B2 und R6


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "B2" Then
If Target.Address(0, 0) <> "R6" Then Exit Sub
End If
Sheets("Einzelelemente").Rows("31,31").EntireRow.AutoFit
Sheets("Einzelelemente").Rows("51,51").EntireRow.AutoFit
End Sub



Gruss Jörg


Bild


Betrifft: AW: Zeilenumbruch bei Formelbezug
von: Markus
Geschrieben am: 29.09.2003 19:17:42

Hi Jörg,

in Zeile 51 ist der gleiche Formelbezug, wie in 31 und ist auch auf Zeilenumbruch gesetzt. Also der gleiche Text von der Eingabe, wird in beiden Zeilen erzeugt bzw. geht noch weiter bis hin in unterschiedlichen Tabellbereichen. Bei den unterschiedlichen Tabellbereichen funktioniert es auch, sprich:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "R6" Then Exit Sub
Sheets("Einzelelemente").Rows("31,31").EntireRow.AutoFit
Sheets("Gruppen").Rows("31,31").EntireRow.AutoFit
Sheets("Funktionen").Rows("31,31").EntireRow.AutoFit
Sheets("Kissen - RE - Metrage").Rows("31,31").EntireRow.AutoFit
End Sub


.. stellt kein Problem dar. Halt nur noch bei Zeile 51 der jeweiligen Tabellen.

Ich habe letztlich in "Eingabe" fünf Vorgabefelder (R6; S6; T6; U6; V6). In den jeweiligen Tabellbereichen für jedes Vorgabefeld eine identische Formel in zwei verschiedenen Zeilen

.. für Eingabe!R6 = 31,31 & 51,51 / Formel: =WENN(Eingabe!R6>0;Eingabe!R6;"")
.. für Eingabe!S6 = 32,32 & 52,52 / Formel: =WENN(Eingabe!S6>0;Eingabe!S6;""), usw.

versteh nur nicht, warum Excel es in unterschiedlichen Tabellbereichen macht und in einer Tabelle nicht. Habe die Zeile "If Target.Address(0, 0) <> "R6" Then Exit Sub" mal weggelassen, hat aber auch nicht geklappt. Dabei ist noch zu bedenken, dass weitere Makros folgen.

Du weist bestimmt Rat, oder ?

Gruß Markus


Bild


Betrifft: AW: Zeilenumbruch bei Formelbezug
von: Jörg Gradert
Geschrieben am: 30.09.2003 02:35:37

Hallo Markus,
bin selbst noch VBA-Anfänger, aber so langsam steige ich dahinter (glaube ich).
in der Zeile
Sheets("Einzelelemente").Rows("51,51").EntireRow.AutoFit
ändere das "51,51" in "51,?"

Wobei das ? hier für die Spalte steht, in der die Formel steht
z.B "51,3" wenn die Formel in C51 steht.

Dasselbe in allen anderen Fällen, Rows("Zeile,Spalte") sind die Koordinaten der Zelle von welcher die Höhe angepasst werden soll.

Damit sollte es funktionieren.

Dummerweise hatten wir ganz zu Anfang B2 als Beispiel gewählt was zu Rows("2,2") führte und mich glauben machte, dass das die Zeile 2 kennzeichnet. Jetzt denke ich das Rows("2,2") dasselbe ist wie Cells(2,2), nämlich die Zelle B2.

Probier mal, bei mir hat es damit geklappt.

Gruss Jörg


Bild


Betrifft: AW: Zeilenumbruch bei Formelbezug
von: PeterW
Geschrieben am: 30.09.2003 02:57:32

Hallo Jörg,

sorry für die Einmischung aber du bist auf dem Holzweg. Wenn einzelnen Zellen formatiert werden sollen dann mit Cells(Zeile, Spalte). Wenn es, wie in der Aufgabenstellung, um Zeilen geht dann Rows(51).

Gruß
Peter


Bild


Betrifft: AW: Zeilenumbruch bei Formelbezug
von: Jörg Gradert
Geschrieben am: 30.09.2003 03:48:09

Hallo Peter,
in meinen Beiträgen ist jede Einmischung, die meinen Kenntnisstand nur erweitern kann ausdrücklich erwünscht.
Danke für den Hinweis es funktioniert.

Der Makrorekorder hatte es bei mir zu Hause so aufgezeichnet
Rows("5,5").EntireRow.AutoFit

jetzt in der Firma
Rows("5:5").EntireRow.AutoFit

Aufbauend auf deinen Vorschlag habe ich
Rows(5).AutoFit
mit Erfolg eingesetzt, das EntireRow kann wohl gespart werden, da mit Rows(5) bereits die ganze Zeile 5 zurückgegeben wird.

Gruss Jörg


Bild


Betrifft: AW: Zeilenumbruch bei Formelbezug
von: Markus
Geschrieben am: 30.09.2003 21:45:40

Hallo Jungs,

ich glaub ich werd noch verrückt. Habe Eure Tips fast erfolgreich umgesetzt und auf die Eingabe Zellen auf zwei erweitert, sprich R6 & S6
VBA sah dann so aus:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "R6" Then Exit Sub
Sheets("Einzelelemente").Rows(31).AutoFit
Sheets("Einzelelemente").Rows(51).AutoFit
Sheets("Gruppen").Rows(31).AutoFit
Sheets("Gruppen").Rows(51).AutoFit
Sheets("Funktionen").Rows(31).AutoFit
Sheets("Funktionen").Rows(51).AutoFit
Sheets("Kissen - RE - Metrage").Rows(31).AutoFit
Sheets("Kissen - RE - Metrage").Rows(51).AutoFit
If Target.Address(0, 0) <> "S6" Then Exit Sub
Sheets("Einzelelemente").Rows(32).AutoFit
Sheets("Einzelelemente").Rows(52).AutoFit
Sheets("Gruppen").Rows(32).AutoFit
Sheets("Gruppen").Rows(52).AutoFit
Sheets("Funktionen").Rows(32).AutoFit
Sheets("Funktionen").Rows(52).AutoFit
Sheets("Kissen - RE - Metrage").Rows(32).AutoFit
Sheets("Kissen - RE - Metrage").Rows(52).AutoFit
End Sub


jetzt kommts: Zellen der "R6"-Bezüge in den einzelnen Tabellbereichen funktionierten alle, bis auf Rows51 von "Gruppen" und "Kissen - RE - Metrage". Verwunderlicherweise funktierte die 51 bei den anderen beiden Tabellen. Alles geprüft, Zeilenumbruch nochmal neu gesetzt, usw.
Die Zellen in den Tabellbereichen für die "S6"-Bezüge sprangen überhaupt nicht an.

Hab schon alles versucht, von Rows("51,2") bis hin zu Rows(51,2), Rows("51"), usw.. Warum funktioniert das denn nicht? Mach ich immer noch etwas falsch??

Gruß Markus


Bild


Betrifft: AW: Zeilenumbruch bei Formelbezug
von: PeterW
Geschrieben am: 30.09.2003 22:32:43

Hallo MArkus,

das liegt an der ersten Zeile:
If Target.Address(0, 0) <> "R6" Then Exit Sub
Wenn du also in S6 etwas eingibst wird das Makro sofort wieder verlassen.

Versuch es mit folgender Struktur

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address = "$A$1" Then
      MsgBox Target.Address
   ElseIf Target.Address = "$A$3" Then
      MsgBox Target.Address
   End If
End Sub


Gruß
Peter


Bild


Betrifft: AW: Zeilenumbruch bei Formelbezug
von: Markus
Geschrieben am: 01.10.2003 19:58:05

Hallo Peter,

super hat geklappt! Ein wenig abgeändert, da ich die Zeilenhöhe immer wieder mit <> ändern wollte und mit " MsgBox Target.Address " keine Bestätigung wünschte, sah es dann so aus:


Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "R6" Then
        Sheets("Einzelelemente").Rows(31).AutoFit
        Sheets("Einzelelemente").Rows(51).AutoFit
        Sheets("Gruppen").Rows(31).AutoFit
        Sheets("Gruppen").Rows(51).AutoFit
        Sheets("Funktionen").Rows(31).AutoFit
        Sheets("Funktionen").Rows(51).AutoFit
        Sheets("Kissen - RE - Metrage").Rows(31).AutoFit
        Sheets("Kissen - RE - Metrage").Rows(51).AutoFit
    End If
    If Target.Address <> "S6" Then
        Sheets("Einzelelemente").Rows(32).AutoFit
        Sheets("Einzelelemente").Rows(52).AutoFit
        Sheets("Gruppen").Rows(32).AutoFit
        Sheets("Gruppen").Rows(52).AutoFit
        Sheets("Funktionen").Rows(32).AutoFit
        Sheets("Funktionen").Rows(52).AutoFit
        Sheets("Kissen - RE - Metrage").Rows(32).AutoFit
        Sheets("Kissen - RE - Metrage").Rows(52).AutoFit
    End If
End Sub


... uund es hat funktioniert. IHR SEIT DIE BESTEN !!!

Vielen Dank!

Gruß Markus


 Bild

Beiträge aus den Excel-Beispielen zum Thema " Zeilenumbruch bei Formelbezug"