Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zeilenumbruch bei Formelbezug

    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
      


    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


      


    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


      


    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


      


    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


      


    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


      


    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


      


    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


      


    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


      


    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


      


    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


     

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