Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
304to308
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
304to308
304to308
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Leerzeilen ausschließen - VBA

Leerzeilen ausschließen - VBA
04.09.2003 00:32:18
Franz W.
Hallo Forum,

wenn ich noch mal in Anspruch nehmen darf, dann hätte ich da noch mal eine Frage, von der ich nicht weiß, ob es überhaupt machbar ist.

Ich setze einen Kommentar zusammen aus mehreren Variablen, jede Variable beinhaltet den Inhalt einer anderen Zelle. Es können aber auch eine oder mehrere Zellen leer sein, der Inhalt der Variablen ist damit auch "". Dann möchte ich die Größe des Kommentars an den Inhalt anpassen. Das ganze wie folgt:

Set cmt = Cells(r, 4).AddComment _
(Text:=(Trim(zeile1 & Chr(10) & zeile2 & Chr(10) & zeile3 & Chr(10) & zeile4 & Chr(10) & zeile5 & Chr(10) & zeile6 & Chr(10) & zeile7 & Chr(10) & zeile8 & Chr(10) & zeile9 & Chr(10) & zeile10 & Chr(10) & zeile11)))
With cmt.Shape
.TextFrame.AutoSize = True
End With

Er bemißt die Größe des Kommentars wohl nach der Anzahl der 11 Variablen, d.h. der Rahmen ist nach unten immer gleich groß. Ich habe das mit Trim auszuschließen versucht, das nimmt er aber nicht.

Gibt es da vielleicht noch eine andere Anweisung, mit der ich die Leerzeilen ausschließen kann. Oder kann das nur über eine Schleife gehen?

Vielen Dank schon mal und Grüße
Franz

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leerzeilen ausschließen - VBA
04.09.2003 00:45:09
PeterW
Hallo Franz,

da wirst du um eine Schleife keinen Bogen machen können. :-)

Leider läßt sich dem Codeschnipsel nicht entnehmen, wie die Variable "zeile" deklariert ist und wie sie mit Werten gefüttert wird. Lassen sich die Zellen vielleicht direkt ansprechen?

Gruß
Peter
AW: Leerzeilen ausschließen - VBA
04.09.2003 00:52:23
Franz W.
Hallo Peter,

vielen Dank für Deine HIlfe. Die zeilenX sind String, der Inhalt ist Text aus einer Zelle, oder eben nichts, wenn eine Zelle leer ist. Hab auch schon versucht die Zellen direkt anzusprechen, ändert aber nichts.

Und ich hab das Problem glaub ich auch gerade kapiert: es sind nciht die leeren Zellen, die Schwierigkeiten machen. Es sind wohl die Zeilenumbrüche (Chr(10)), die sich mit Trim nicht ausfiltern lassen, was meinst Du?

Grüße
Franz
Anzeige
AW: Leerzeilen ausschließen - VBA
04.09.2003 01:01:20
PeterW
Hallo Franz,

klar sind es die Zeilenumbrüche, Trim entfernt nur Leerzeichen. Deswegen muss es wohl eine Schleife sein in der du eine Stringvariable füllst, für jede Variable (zelle) prüfst, ob sie nicht leer ist und wenn diese Bedingung erfüllt ist einen Zeilebruch einfügst und den Wert der Variablen mit & anhängst und die Stringvariable als Kommentar der Zelle zuweist.

Gibt es bei den Zellen, die in die Variablen geschrieben werden eine Gemeinsamkeit (Zeilennummer, Spaltenbezeichnug, Intervall...)? Vielleicht solltest du die Strings in ein Array schreiben. Wie schon geschrieben, ohne Code schwer zu sagen.

Gruß
Peter
Anzeige
AW: Leerzeilen ausschließen - VBA
04.09.2003 01:06:34
Franz W.
Hallo Peter,

vielen Dank, dass Du Dich bemühst, ich grüble grade über den Ansatz für das Schleifchen, das ich mir da binden muss.

Weiß nicht, ob das jetzt reicht:

zeile1 = Cells(r, 61)
zeile2 = Cells(r, 62)
zeile3 = Cells(r, 63)
zeile4 = Cells(r, 64)
zeile5 = Cells(r, 65)
zeile6 = Cells(r, 66)
zeile7 = Cells(r, 67)
zeile8 = Cells(r, 68)
zeile9 = Cells(r, 69)
zeile10 = Cells(r, 70)
zeile11 = Cells(r, 71)

Leer können nur Zeilen von unten her sein. Zumindest in zeile1 steht was drin. Es kann auch keine leeren Zwischenzeilen geben. Genügen diese Angaben?

Grüße
Franz
Anzeige
AW: Leerzeilen ausschließen - VBA
04.09.2003 01:14:48
PeterW
Hallo Franz,

das könnte so aussehen - oder mach es wie beschrieben mit Replace. Was besser/schneller ist hängt von deinem Code ab. :-)

Gruß
Peter

Sub Franz()
Dim intSpalte As Integer
Dim strAusgabe As String
'als was "r" deklariert ist weiß ich natürlich nicht
'dim r as ????
For intSpalte = 61 To 71
If Cells(r, intSpalte) <> "" Then
strAusgabe = strAusgabe & Cells(r, intSpalte) & Chr(10)
End If
Next
MsgBox strAusgabe
End Sub

Jetzt hab ich die Wahl
04.09.2003 01:30:05
Franz W
Hallo Peter,

vielen Dank, Deins funktioniert genau so gut. Jetzt kann ich's mir aussuchen. Deine Lösung ist auf jeden Fall die anspruchsvollere Schleife, da war wieder was Neues drin für mich. Ja, und das mit Replace ist auch nicht schlecht.

Vielen Dank auch Dir und Grüße (und evtl. jetzt auch eine gute Nacht?)
Franz
Anzeige
AW: Leerzeilen ausschließen - VBA
04.09.2003 01:05:03
Matthias G
Hallo Franz,
es gibt die Funktion "Replace", damit kannst du in einem String Zeichenfolgen durch eine andere Zeichenfolge ersetzen. Ersetze also zwei Chr(10) durch eines:

Dim s As String
s = zeile1 & Chr(10) & zeile2 & Chr(10) & zeile3 & Chr(10) & zeile4 & Chr(10) _
& zeile5 & Chr(10) & zeile6 & Chr(10) & zeile7 & Chr(10) & zeile8 & Chr(10) & _
zeile9 & Chr(10) & zeile10 & Chr(10) & zeile11
s = Replace(s, Chr(10) + Chr(10), Chr(10))
Set cmt = Cells(1, 1).AddComment(Text:=s)

Ist es das, was Du brauchst?

Matthias
AW: Leerzeilen ausschließen - VBA
04.09.2003 01:19:01
Franz W.
Hallo Matthias,

toller Tipp, vielen Dank. Allerdings steht nicht fest, wieviele Zeilen leer sind. Es ist also variabel ob am Ende 2, 3, 4 .... oder gar 10 einzelne Chr(10) rumstehen. Ich habe jetzt die ZEile s = Replace(s, Chr(10) + Chr(10), Chr(10)) viermal untereinander geschrieben, das erzielt den bestmöglichen Erfolg: es bleibt am Ende maximal eine leere Zeile übrig. Und das ist durchaus ansehnlich.

Vielen Dank und Grüße
Franz
Anzeige
AW: kleine Korrektur
04.09.2003 01:20:15
Matthias G
Hallo Franz,
damit auch 3 oder mehr Leerzeilen gelöscht werden, musst Du die Replace-Funktion in einer Schleife laufen lassen: (also doch Schleife ;-)

For i=1 to 10
s = Replace(s, Chr(10) + Chr(10), Chr(10))
next i

Gruß
Matthias
Danke, das klappt! o.T.
04.09.2003 01:24:07
Franz W.
AW: Freut mich! Gute Nacht denn - o.T.
04.09.2003 01:25:34
Matthias G
-

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige