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

Wenn..., dann... - VBA

Wenn..., dann... - VBA
03.12.2006 16:31:46
Wolfgang
Hallo*
folgender Code-Auszug bewirkt, dass aus einem versteckten Tabellenblatt Textboxes befüllt werden. Ich bekomme es einfach nicht hin, dass wenn die Spalte "Title" in der entsprechenden Zeile einen Eintrag hat, auch der Titel dann nach "Anrede" in der Textbox "txtAnrede" gesetzt werden soll (beides zusammen in einer Textbox). Gleiches gilt für die Telefonnummer; Steht in den Spalten "Vorwahl", "Nummer" etwas drin, sollen diese Nummern genommen werden sind diese leer, soll aus den Spalten "Mobilvorwahl" und "Mobilnummer" genommen werden. Ich wäre für jede Hilfestellung sehr dankbar. Untenstehend auszugsweise der Code. Danke schon jetzt wieder für die Rückantwort.
Gruß - Wolfgang

Sub Textfelder_Fuellen()
Dim rng As Range
With Worksheets("Daten")
' Spaltenformat soll überall Standard sein
.Cells.NumberFormat = "General"
.Columns("DD:DD").NumberFormat = "m/d/yyyy"
Set rng = .Rows(1).Find("Anrede", LookAt:=xlWhole)
If Not rng Is Nothing Then
txtAnrede.Text = rng.Offset(1, 0).Text & IIf(rng.Offset(1, 1) <> "", ", " & rng.Offset(1, 1).Text, "")
End If
Set rng = .Rows(1).Find("Name", LookAt:=xlWhole)
If Not rng Is Nothing Then
txtName.Text = rng.Offset(1, 1).Text & IIf(rng.Offset(1, 0) <> "", ", " & rng.Offset(1, 0).Text, "")
End If
Set rng = .Rows(1).Find("Vorname", LookAt:=xlWhole)
If Not rng Is Nothing Then
txtVorname.Text = rng.Offset(1, 0).Text
End If
Set rng = .Rows(1).Find("Geburtsdatum", LookAt:=xlWhole)
If Not rng Is Nothing Then
txtGebdat.Text = rng.Offset(1, 0).Text
End If
Set rng = .Rows(1).Find("Staatsangehörigkeit", LookAt:=xlWhole)
If Not rng Is Nothing Then
txtStaatsangeh.Text = rng.Offset(1, 0).Text
End If
End With
Set rng = Nothing
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn..., dann... - VBA
03.12.2006 17:01:19
Gerd
Hallo Wolfgang,
Zwischenfragen:
Verschieben sich bzw. verschiebst Du die Tabellenblattspalten, die
abgefragt werden?
Oder stehen die Überschriften jeweils immer in einer bestimmten Spalte?
Wie heißen deine Telefon-Textboxen ?
Gruß
Gerd
AW: Wenn..., dann... - VBA
03.12.2006 17:39:06
Wolfgang
Hallo Gerd,
grundsätzlich stehen die Überschriften immer in der gleichen Spalte, manchmal variiert das aber, so dass der Code generell bewirken soll, dass er den Text, der sich unterhalb der Überschrift (z.B. Staatsangehörigkeit etc.) befindet, in die Textbox übernehmen soll. Das klappt auch soweit, nur in den Fällen, in denen ggfs. noch Dinge hinzukommen sollen bzw. wie bei der Tel.-Nr. das so sein soll, dass immer zunächst das Festnetz abgefragt wird und nur, wenn die Zellen leer sind, alternativ auf Mobil wechseln soll, habe ich keine Idee, wie das umgestellt werden könnte.
txtVorwahl
txtNummer
oder
txtMobilvorwahl
txtMobilnummer
Gruß - Wolfgang
Anzeige
AW: Wenn..., dann... - VBA
03.12.2006 23:38:12
Gerd
Hallo Wolfgang,
ich habe mal unterstellt, dass die Textboxen auf einer Userform sind.

Sub Test()
Dim myArray(1 To 9, 0 To 2) As String
Dim rng As Range
Dim x As Integer, y As Integer
With Worksheets("Daten")
' Spaltenformat soll überall Standard sein
.Cells.NumberFormat = "General"
.Columns("DD:DD").NumberFormat = "m/d/yyyy"
End With
'Textboxen
myArray(1, 0) = "txtAnrede"
myArray(2, 0) = "txtName"
myArray(3, 0) = "txtVorname"
myArray(4, 0) = "txtGebdat"
myArray(5, 0) = "txtStaatsangeh"
myArray(6, 0) = "txtVorwahl"
myArray(7, 0) = "txtNummer"
myArray(8, 0) = "txtMobilvorwahl"
myArray(9, 0) = "txtMobilnummer"
'Überschriften
myArray(1, 1) = "Anrede"
myArray(1, 2) = "Titel"
myArray(2, 1) = "Name"
myArray(3, 1) = "Vorname"
myArray(4, 1) = "Geburtsdatum"
myArray(5, 1) = "Staatsangehörigkeit"
myArray(6, 1) = "Vorwahl"
myArray(7, 1) = "Nummer"
myArray(8, 1) = "Mobilvorwahl"
myArray(9, 1) = "Mobilnummer"
For x = 1 To 9
UserForm1.Controls(myArray(x, 0)).Text = ""
Next
For x = 1 To 9
For y = 1 To UBound(myArray, 2)
If myArray(x, y) = Empty Then Exit For
rng = Worksheets("Daten").Rows(1).Find(myArray(x, y), lookat:=xlwhoole)
If rng Is Nothing Then Exit For
With UserForm1.Controls(myArray(x, 0))
Select Case myArray(x, y)
Case "Titel"
If Not rng.Offset(1, 0).Value = "" Then _
.Text = .Text & " " & rng.Offset(1, 0).Value
Case "Name"
.Text = rng.Offset(1, 1).Text _
& IIf(rng.Offset(1, 0) <> "", ", " & rng.Offset(1, 0).Text, "")
Case "Mobilvorwahl", "Mobilnummer"
If UserForm1.Controls("txtNummer").Text = "" Then .Text = rng.Offset(1, 0).Text
Case Else
.Text = rng.Offset(1, 0).Text
End Select
End With
Next x
Next y
End Sub

Gruß
Gerd
Anzeige
Danke Gerd
04.12.2006 05:54:28
Wolfgang
Hallo Gerd,
herzlichen Dank für Deine Rückmeldung und der Ausarbeitung; Das sieht ja nun ganz anders aus; ich hätte wahrscheinlich selbst noch lange probieren können, ohne in der Form darauf zu kommen. Werde den Code nun insgesamt ergänzen und vervollständigen (es sind insgesamt 20 Textboxes). Sollte ich noch weitere Fragen haben, melde ich mich sicherlich erneut. In dem Sinne nochmals recht herzlichen Dank.
Gruß - Wolfgang
Vielleicht doch noch eine Frage: hinter my Array steht in Klammern (1, 0) etc. - wofür steht das?
AW: Danke Gerd
04.12.2006 19:50:20
Gerd
Hallo Wolfgang,
in gebotener Kürze kann ich dies nicht exakt u. vollständig erklären.
Dies ist ein Datenfeld-Element. So ganz grob kannst Du dir dieses
zwei-dimensionale Datenfeld "myArray" wie eine Excel-Tabelle u. den Zugriff auf einzelne Elemente wie bei der "Cells-Schreibweise" vorstellen.
Und zu meiner Schande muss ich noch gestehen, dass ich meinen Code nicht getestet
hatte, hoffe aber, dass er trotzdem "springt".
Gruß
Gerd
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige