Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1140to1144
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
Inhaltsverzeichnis

Zellen zusammenführen

Zellen zusammenführen
Space
Hallo Forum,
Ausgangssituatuation: Spalte 1 = Anrede; Spalte 2 = Name
Ziel: In Spalte 5 soll die personalisierte Anrede für einen Brief generiert werden. Folgenden Code habe ich aufgesetzt:
Private Sub CommandButton1_Click()
Dim variable As Integer
variable = 2
Do While variable 
If Cells(variable, 1) = "Herr" Then
Cells(variable, 5) = "Sehr geehrter" & " " & Cells(variable, 1) & " " & Cells(variable, 2)
variable = variable + 1
End If
If Cells(variable, 1) = "Frau" Then
Cells(variable, 5) = "Sehr geehrte" & " " & Cells(variable, 1) & " " & Cells(variable, 2)
variable = variable + 1
End If
If Cells(variable, 1) = "" Then
Cells(variable, 5) = "Sehr geehrte Damen und Herren"
variable = variable + 1
End If
Loop
End Sub

Folgende 2 Probleme habe ich:
1) Die Liste ist in ihrer Länge variabel und er soll alle Einträge nehmen, nicht nur bis 10 (wie oben angegeben)
2) Wenn vor und/oder nach "Herr" oder "Frau" noch etwas steht (wie z.B.: ein Leerzeichen o.ä.) nimmt er mir den Begriff nicht an und geht über die If-Schleife hinweg.
Wie kann ich diese Probleme lösen?
Danke und Gruß
Space
So vielleicht!
02.03.2010 12:17:05
Backowe
Hi,
Private Sub CommandButton1_Click()
Dim variable As Integer
variable = 2
Do While variable  0 Then
Cells(variable, 5) = "Sehr geehrter" & " " & Cells(variable, 1) & " " & Cells(variable, 2)
variable = variable + 1
End If
If InStr(LCase(Cells(variable, 1)), "frau") > 0 Then
Cells(variable, 5) = "Sehr geehrte" & " " & Cells(variable, 1) & " " & Cells(variable, 2)
variable = variable + 1
End If
If Cells(variable, 1) = "" Then
Cells(variable, 5) = "Sehr geehrte Damen und Herren"
variable = variable + 1
End If
Loop
End Sub
Gruß Jürgen
Anzeige
AW: Zellen zusammenführen
02.03.2010 12:17:43
Rudi
Hallo,
geht bis zu letztem Eintrag in B:
Private Sub CommandButton1_Click()
Dim variable As Integer
variable = 2
Do While variable 

Gruß
Rudi
AW: Zellen zusammenführen
02.03.2010 12:21:54
welga
Hallo,
versuch es mal so:
Private Sub CommandButton1_Click()
Dim variable As Long
variable = 2
Do While variable 

Gruß
welga
Anredeformen per VBA erstellen
02.03.2010 12:22:53
NoNet
Hallo Space,
verwende dazu folgendes Makro, es korrigiert falsche GROSS-/Kleinschreibung, zuviele Leerzeichen :
Private Sub CommandButton1_Click()
Dim lngZeile As Integer
lngZeile = 2
Do While lngZeile 
Hier ein kleines Beispiel (in Spalte E das Ergebnis) :
ABCDE
1
2
3
4
5
6
7
8
9
10
11

Gruß, NoNet
Anzeige
AW: Anredeformen per VBA erstellen
02.03.2010 13:44:29
Space
Bin gerade bei dieser Version angekommen. Ist schon etwas feines ;)! Wollte die Version auf meine Excel Liste anpassen, in der ab E18 die Anrede steht. Jetzt übersrpingt er aber immer die Do While Schleife. Daher meine Frage, was er durch den Code versucht zu finden (Kriterium)?
--> Do While lngZeile Gruß
Space
Anredeformen per VBA erstellen - Teil 2
02.03.2010 13:59:45
NoNet
Hallo Space,
es freut mich, dass Dir mein Lösungsansatz gefällt :-) - hier eine etwas universellere Version :
Private Sub CommandButton1_Click()
Dim lngZeile As Integer, lngSpalte As Long, lngSpAnrede As Long
Dim rngZelle As Range
Set rngZelle = [E18] 'Einfach nur hier die Adresse der ERSTEN ANREDE anpassen !
lngSpAnrede = 8      'Spalte, in der die zusammengesetzte Anrede ausgegeben werden soll
lngZeile = rngZelle.Row     'Erste Zeile der Anrede ermitteln
lngSpalte = rngZelle.Column 'Spalte der Anrede ermitteln
'Do While lngZeile 
Hier musst Du nur jeweils diese beiden Codezeilen anpassen :
    Set rngZelle = [E18] 'Einfach nur hier die Adresse der ERSTEN ANREDE anpassen !
lngSpAnrede = 8      'Spalte, in der die zusammengesetzte Anrede ausgegeben werden soll

Gruß, NoNet
Anzeige
AW: Anredeformen per VBA erstellen - Teil 2
02.03.2010 14:44:43
Space
Hey NoNet,
Also die Lösung ist wirklich super. Ist mir zwar schleierhaft wie man auf so etwas kommt, aber nochmal vielen Dank dafür!
Eine Frage habe ich doch noch. Ich habe alles angepasst und es funktioniert soweit. Nur ist in meiner aktuellen Tabelle der Name nicht mehr direkt hinter den Zellen Anrede ;/. Jetzt wird die Anrede korrekt ausgegeben und das Feld danach auch, ich will jedoch nicht das Feld danach sondern in Spalte C die Namen haben (nicht Anrede in Spalte E und Namen in Spalte F) ...
Hättest du da noch einen Tipp für mich, ist das möglich!
Vielen Dank im Voraus für deine Bemühungen, ich weiß das sehr zu schätzen!
Gruß, Space
Anzeige
Anredeformen die Dritte...
02.03.2010 15:13:54
NoNet
Hallo Space,
verwende dazu folgendes Makro :
Private Sub CommandButton1_Click()
Dim lngZeile As Integer, lngSpalte As Long
Dim lngSpAnrede As Long, lngSpName As Long
Dim rngZelle As Range
Set rngZelle = [E18] 'Einfach nur hier die Adresse der ERSTEN ANREDE anpassen !
lngSpName = 3        'Spalte, die den Namen enthält, 3 = Spalte C
lngSpAnrede = 8      'Spalte, in der die zusammengesetzte Anrede ausgegeben werden soll
lngZeile = rngZelle.Row     'Erste Zeile der Anrede ermitteln
lngSpalte = rngZelle.Column 'Spalte der Anrede ermitteln
'Do While lngZeile 
Noch ein Tipp/Bitte : Wenn Du gleich zu Beginn alle relevanten Details in Deine Anfrage packst, musst Du nicht ständig nachfragen und die Helfer nicht ständig "nacharbeiten" ;-)
Gruß, NoNet
Anzeige
;) Danke! Hat geklaptt!
02.03.2010 15:47:14
Space
Hallo NoNet,
ich werde deinen Tipp in Zukunft beherzigen!
Gruß
Space
AW: Zellen zusammenführen
02.03.2010 12:25:43
Renee
Hi Space,
Vielleicht so:
Private Sub CommandButton1_Click()
Dim lngRow As Long
For lngRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Select Case IIf(IsEmpty(Cells(lngRow, 1)), " ", UCase(Left(Cells(lngRow, 1), 1)))
Case "H"
Cells(lngRow, 5) = "r Herr"
Case "F"
Cells(lngRow, 5) = " Frau"
Case Else
Cells(lngRow, 5) = " Damen und Herren"
End Select
Cells(lngRow, 5) = "Sehr geehrte" & Cells(lngRow, 5)
Next lngRow
End Sub

GreetZ Renée
oops, die Namen vergessen...
02.03.2010 12:27:44
Renee
Hi Space,
Private Sub CommandButton1_Click()
Dim lngRow As Long
For lngRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Select Case IIf(IsEmpty(Cells(lngRow, 1)), " ", UCase(Left(Cells(lngRow, 1), 1)))
Case "H"
Cells(lngRow, 5) = "r Herr " & Cells(lngRow, 2)
Case "F"
Cells(lngRow, 5) = " Frau " & Cells(lngRow, 2)
Case Else
Cells(lngRow, 5) = " Damen und Herren"
End Select
Cells(lngRow, 5) = "Sehr geehrte" & Cells(lngRow, 5)
Next lngRow
End Sub

GreetZ Renée
Anzeige
noch ne Variante
02.03.2010 12:29:23
Erich
Hi Vorname,
vielleicht auch so:

Private Sub CommandButton1_Click()
Dim lngZ As Long     ' besser Long als Integer
Dim strT As String, strE As String
For lngZ = 2 To 9
strT = LCase(Cells(lngZ, 1))
strE = " " & Cells(lngZ, 1) & " " & Cells(lngZ, 2)
If InStr(strT, "herr") > 0 Then
Cells(lngZ, 5) = "Sehr geehrter" & strE
ElseIf InStr(strT, "frau") > 0 Then
Cells(lngZ, 5) = "Sehr geehrte" & strE
ElseIf strT = "" Then
Cells(lngZ, 5) = "Sehr geehrte Damen und Herren"
Else
Cells(lngZ, 5) = "Irgendwie anders: " & strE
End If
Next lngZ
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
IHR SEID KLASSE!
02.03.2010 12:48:00
Space
Vielen Dank für eure zahlreichen Antworten. Klappt super!!
Viele Grüße
Space

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige