Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
316to320
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
316to320
316to320
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilenumbruch bei Formelbezug

Zeilenumbruch bei Formelbezug
28.09.2003 21:29:12
Markus
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

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilenumbruch bei Formelbezug
28.09.2003 22:00:41
Jörg Gradert
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
AW: Zeilenumbruch bei Formelbezug
28.09.2003 22:18:04
Markus
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
Anzeige
AW: Zeilenumbruch bei Formelbezug
28.09.2003 22:56:19
Jörg Gradert
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
Anzeige
AW: Zeilenumbruch bei Formelbezug
29.09.2003 19:17:42
Markus
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
Anzeige
AW: Zeilenumbruch bei Formelbezug
30.09.2003 02:35:37
Jörg Gradert
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
Anzeige
AW: Zeilenumbruch bei Formelbezug
30.09.2003 02:57:32
PeterW
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
AW: Zeilenumbruch bei Formelbezug
30.09.2003 03:48:09
Jörg Gradert
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
Anzeige
AW: Zeilenumbruch bei Formelbezug
30.09.2003 21:45:40
Markus
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
Anzeige
AW: Zeilenumbruch bei Formelbezug
30.09.2003 22:32:43
PeterW
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
AW: Zeilenumbruch bei Formelbezug
01.10.2003 19:58:05
Markus
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
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige