Microsoft Excel

Herbers Excel/VBA-Archiv

3 Zellen zu 1ner 3-Zeiligen (wieAlt+Enter) machen

Betrifft: 3 Zellen zu 1ner 3-Zeiligen (wieAlt+Enter) machen von: Horst_H
Geschrieben am: 11.08.2008 16:07:27

Hallo!

Meine Frage: In Spalte C steht eine Straßenbezeichnung, in Spalte H ein Kommentar und in Spalte I ein zweiter Kommentar. Nun möchte ich per VBA (weil ich viele Mappen unterschiedl. Länge und unterschiedlicher Stadtteile habe) erreichen, dass zusätzlich in die jeweilige Zelle in Spalte C je nach Inhalt, also ob H bzw. I gefüllt sind, die jeweiligen Zellen in C mit den Kommentarinhalten zu 2-zeiligen bzw. 3-zeiligen Zellen werden. Da in den Listen eine hohe Fluktuation ist, sich also häufig ändert, kann ich nicht mit einer starren Masterdatei arbeiten und möchte es deshalb über VBA. Im Archiv hier fand ich so nichts, Wrap habe ich mir in der Hilfe angesehen, damit komme ich aber nicht weiter und der Macrorecorder half mir auch nicht. Wer kann mir bitte behilflich sein. Start is in Zeile 3 und Länge variabel aufgrund C.

Spalte C Spalte H Spalte I
Braunstr. Kommentar1 Kommentar2
C-Str. Kommentar1
D-Str. Kommentar2

ergibt

Braunstr.
Kommentar1
Kommentar2

C-Str.
Kommentar1

D-Str.
Kommentar2

Es wäre ganz prima, wenn von euch Profis mir weiter geholfen wird. Ich probiere schon versch. Möglichkeiten - und trete auf der Stelle. Danke für jeden Tipp!!

Gruß
Horst_H

  

Betrifft: AW: 3 Zellen zu 1ner 3-Zeiligen (wieAlt+Enter) machen von: Daniel
Geschrieben am: 11.08.2008 16:29:01

HI

so vielleicht:

Sub test()
Columns(3).Insert
With Range("C3:C" & Cells(Rows.Count, 4).End(xlUp).Row)
    .FormulaLocal = "=D3&wenn(I3<>"""";Zeichen(10)&i3;"""")&Wenn(J3<>"""";zeichen(10)&j3;"""")"
    .Copy
    .Offset(0, 1).PasteSpecial xlPasteValues
    .Offset(0, 1).WrapText = True
    .EntireColumn.Delete
End With
End Sub



Gruß, Daniel


  

Betrifft: AW: 3 Zellen zu 1ner 3-Zeiligen (wieAlt+Enter) mac von: Horst_H
Geschrieben am: 11.08.2008 16:42:07

Hi Daniel,
mit so rascher Antwort hatte ich nicht gerechnet und gleich ausprobiert. Funktioniert schon sehr gut - aber als ich auf "Zeichen(30)" erhöht habe ( der Kommentartext kann bis 100 Zeichen lang sein je Kommentarfeld, erhalte ich das kleine Viereck dazwischen und die Spalte wird auch nicht breiter. Sicherlich habe ich mich ungeschickt ausgedrückt: Spalte C (Straßenbezeichnung), Spalte H (Kommentar1) und Spalte I (Kommentar2) können unterschiedlich aber maximal 100 Zeichen lang sein. Ist das hinzubekommen? Das wäre 100%ig!!!
Danke und Gruß
Horst_H


  

Betrifft: AW: 3 Zellen zu 1ner 3-Zeiligen (wieAlt+Enter) mac von: Daniel
Geschrieben am: 11.08.2008 16:50:52

Hi

sorry, aber was macht Zeichen(30) und wo hast du das eingegeben?
Zeichen(10) ist der Code für ALT+ENTER und sorgt für den erzwungenen Zeilenumbruch nach den einzelnen Werten und solte so bleiben. Das hat nix mit der Anzahl von Zeichen zu tun.

die Spaltenbreite anpassen kannst du mit (Code einfügen vor der Zeile mit .Delete)
.Offset(0, 1).EntireColumn.AutoFit

Gruß, Daniel


  

Betrifft: AW: 3 Zellen zu 1ner 3-Zeiligen (wieAlt+Enter) mac von: Horst_H
Geschrieben am: 11.08.2008 18:00:07

Sorry, Daniel,

das habe ich falsch interpretiert. Verzeih' einem Anfänger. Danke für deine erfolgreiches Script + Gruß, Horst_H


  

Betrifft: AW: 3 Zellen zu 1ner 3-Zeiligen (wieAlt+Enter) machen von: Erich G.
Geschrieben am: 11.08.2008 16:31:54

Hallo Horst,
probier mal

Option Explicit

Sub UmbrZeilen()
   Dim rng As Range

   For Each rng In Range(Cells(1, 3), Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3))
      rng = rng & IIf(IsEmpty(rng.Offset(, 5)), "", vbLf & rng.Offset(, 5)) & _
                  IIf(IsEmpty(rng.Offset(, 6)), "", vbLf & rng.Offset(, 6))
   Next rng
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: 3 Zellen zu 1ner 3-Zeiligen (wieAlt+Enter) mac von: Horst_H
Geschrieben am: 11.08.2008 16:56:20

Hallo Erich,


auch dir Danke. Bei deiner Version sind keine Vierecke dazwischen, aber die Zelllänge ist auch hier leider noch zu klein, sodass es bei längerem Text 5- bzw. 6-Zeiler werden. Bei der Version von Daniel und deiner stehen, wenn in beiden Kommentaren Inhalt ist, beide in einer Zeile als 2.te Zeile in der Zelle. Vermutlich geht das wohl nicht anders? Ich lade ein Beispiel hoch. Vielleicht habt ihr ja doch eine Idee, wie das ginge?? Aber ansonsten schon einmal, wenn es nicht änderbar ist, recht herzlichen Dank euch beiden!!

https://www.herber.de/bbs/user/54516.xls

Gruß
Horst_H


  

Betrifft: AW: 3 Zellen zu 1ner 3-Zeiligen (wieAlt+Enter) mac von: Erich G.
Geschrieben am: 11.08.2008 17:18:54

Hallo Horst,
bei mir läuft das problemlos durch, und wohl auch mit dem gewünschten Ergebnis.

Wegen der möglichen langen Texte habe ich mal H37 und I37 etwas verlängert:
https://www.herber.de/bbs/user/54517.xls

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: 3 Zellen zu 1ner 3-Zeiligen (wieAlt+Enter) mac von: Horst_H
Geschrieben am: 11.08.2008 18:24:40

Hi Erich,

habe die Spalte C auf 100 Zeichen-Länge eingestellt und es funktioniert nun wie von mir gewünscht und dir beabsichtigt! Toll. Kannst du mir bitte noch die Iffs kurz erklären, weil ich möchte es verstehen und beabsichtige noch eine version zu machen, wobei grundsätzlich - gleich ob leer oder gefüllt - die Spalten H + I als Zeilen eingefügt werden sollen für einen ähnlichen Vorgang. Aber auf jeden Fall - Danke für die rasche Unterstützung übrigens in diesem Forum! Gruß, Horst_H

rng = rng & IIf(IsEmpty(rng.Offset(, 5)), "", vbLf & rng.Offset(, 5)) & _
IIf(IsEmpty(rng.Offset(, 6)), "", vbLf & rng.Offset(, 6))
' rng.Offset(, 5).Resize(, 2).ClearContents


  

Betrifft: AW: 3 Zellen zu 1ner 3-Zeiligen (wieAlt+Enter) mac von: Horst_H
Geschrieben am: 11.08.2008 19:01:05

hab's hinbekommen mit IsNull - aber das automatisch zu einer Variablenabfrage deklariert? Ich tue mich noch bisschen schwer mit der Verschachtelung. Thx!


 

Beiträge aus den Excel-Beispielen zum Thema "3 Zellen zu 1ner 3-Zeiligen (wieAlt+Enter) machen"