Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1532to1536
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

VBA If Then für 120 Namen

VBA If Then für 120 Namen
14.01.2017 09:06:38
Becker
Hallo Zusammen,
hoffe es gibt eine Lösung!
Muß ich für jede If Then funktion in VBA eigenen Block schreiben?
es sind insgesamt 120 Namen für die ich If Then benutzen möchte, gibt es eine möglichkeit etwas am Code zu sparen?
hier der Code:
~f

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Name1
If TextBox1.Text = "Name1" Then
TextBox2.Text = Tabelle4.Range("F2").Value
TextBox3.Text = Tabelle4.Range("G2").Value
TextBox4.Text = Tabelle4.Range("H2").Value
TextBox5.Text = Tabelle4.Range("I2").Value
TextBox6.Text = Tabelle4.Range("E2").Value
TextBox7.Text = Tabelle4.Range("C2").Value
TextBox8.Text = Tabelle4.Range("D2").Value
TextBox9.Text = Tabelle4.Range("B2").Value
TextBox10.Text = Tabelle4.Range("K2").Value
TextBox11.Text = Tabelle4.Range("N2").Value
TextBox12.Text = Tabelle4.Range("O2").Value
TextBox13.Text = Tabelle4.Range("J2").Value
TextBox14.Text = Tabelle4.Range("M2").Value
TextBox15.Text = Tabelle4.Range("L2").Value
TextBox16.Text = Tabelle4.Range("P2").Value
TextBox17.Text = Tabelle4.Range("Q2").Value
Image1.Picture = LoadPicture("C:\Users\Name\Desktop\Name\MA_Fotos\RZ\Name1.jpg")
Image1.PictureSizeMode = fmPictureSizeModeStretch
End If
'Name2
If TextBox1.Text = "Name2" Then
TextBox2.Text = Tabelle4.Range("F3").Value
TextBox3.Text = Tabelle4.Range("G3").Value
TextBox4.Text = Tabelle4.Range("H3").Value
TextBox5.Text = Tabelle4.Range("I3").Value
TextBox6.Text = Tabelle4.Range("E3").Value
TextBox7.Text = Tabelle4.Range("C3").Value
TextBox8.Text = Tabelle4.Range("D3").Value
TextBox9.Text = Tabelle4.Range("B3").Value
TextBox10.Text = Tabelle4.Range("K3").Value
TextBox11.Text = Tabelle4.Range("N3").Value
TextBox12.Text = Tabelle4.Range("O3").Value
TextBox13.Text = Tabelle4.Range("J3").Value
TextBox14.Text = Tabelle4.Range("M3").Value
TextBox15.Text = Tabelle4.Range("L3").Value
TextBox16.Text = Tabelle4.Range("P3").Value
TextBox17.Text = Tabelle4.Range("Q3").Value
Image1.Picture = LoadPicture("C:\Users\Name\Desktop\Name\MA_Fotos\RZ\Name2.jpg")
Image1.PictureSizeMode = fmPictureSizeModeStretch
End If
End Sub
~f
Gruß Andreas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA If Then für 120 Namen
14.01.2017 09:15:50
lupo1

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
lfdNr = Val(Replace(TextBox1.Text, "Name", ""))
Zeile = lfdNr + 1
TextBox2.Text = Tabelle4.Range("F" & Zeile).Value
TextBox3.Text = Tabelle4.Range("G" & Zeile).Value
':: und so weiter
TextBox17.Text = Tabelle4.Range("Q" & Zeile).Value
Image1.Picture = LoadPicture("C:\Users\Name\Desktop\Name\MA_Fotos\RZ\Name" & lfdNr &".jpg")
Image1.PictureSizeMode = fmPictureSizeModeStretch
End If

AW: VBA If Then für 120 Namen
14.01.2017 09:47:06
Peter
Hallo Andreas,
wenn Du die Reihefolgen so gestalten kannst, dass Textbox2.Text Spalte2 ist und TB3=SP3 / TB4=SP4 usw.
Dann kannst Du folgenden Code einsetzen.
Wenn Du eine Userform verwendes:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Zeile As Byte, i As Byte
If TextBox1.Text = "Name1" Then Zeile = 2
If TextBox1.Text = "Name2" Then Zeile = 3
For i = 2 To 121
Controls("Textbox" & i).Text = Cells(Zeile, i).Value
Next i
If Zeile = 2 Then
Image1.Picture = LoadPicture("C:\Users\Name\Desktop\Name\MA_Fotos\RZ\Name1.jpg")
Image1.PictureSizeMode = fmPictureSizeModeStretch
End If
If Zeile = 3 Then
Image1.Picture = LoadPicture("C:\Users\Name\Desktop\Name\MA_Fotos\RZ\Name2.jpg")
Image1.PictureSizeMode = fmPictureSizeModeStretch
End If
End Sub
Wenn die TB auf dem Tabellenblatt sind:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Zeile As Byte, i As Byte
If TextBox1.Text = "Name1" Then Zeile = 2
If TextBox1.Text = "Name2" Then Zeile = 3
For i = 2 To 120
ActiveSheet.Shapes("Textbox" & i).Text = ActiveSheet.Cells(Zeile, i).Value
Next i
If Zeile = 2 Then
Image1.Picture = LoadPicture("C:\Users\Name\Desktop\Name\MA_Fotos\RZ\Name1.jpg")
Image1.PictureSizeMode = fmPictureSizeModeStretch
End If
If Zeile = 3 Then
Image1.Picture = LoadPicture("C:\Users\Name\Desktop\Name\MA_Fotos\RZ\Name2.jpg")
Image1.PictureSizeMode = fmPictureSizeModeStretch
End If
End Sub
Beide Code`s sind ungetestet.
Viel erfolg und Gruß
Peter (hpo)
Anzeige
AW: VBA If Then für 120 Namen
14.01.2017 16:06:09
Becker
Hallo,
@ Peter
bei deinem Code kommt eine Fehlermeldung und folgende Zeile im Code
Controls("Textbox" & i).Text = Cells(Zeile, i).Value
wird Markiert!
@lupo1
wo sätze ich If Then am Anfang des Code ein?
Gruß Andreas
AW: VBA If Then für 120 Namen
15.01.2017 00:04:31
Peter
Hallo Andreas,
Sorry
ersetze diese Zeile mit folgenden Code
"Controls("Textbox" & CStr(i)).Text=ActiveSheet.Cells(Zeile,i).Value"
oder
"ActiveSheet.Shapes("Textbox" &CStr(i)).Text = ActiveSheet.Cells(Zeile, i).Value"
Gruß
Peter (hpo)
AW: VBA If Then für 120 Namen
15.01.2017 00:23:30
Becker
Hallo Zusammen,
der Fahl wurde mit Hilfe gelöst!
Hier der Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim c As Range
With Tabelle4
Set c = .Columns(1).Find(TextBox1.Text, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
TextBox2.Text = .Cells(c.Row, "F").Value
TextBox3.Text = .Cells(c.Row, "G").Value
'und so weiter
End If
If Dir("C:\Users\Besitzer\Desktop\Besitzer\MA_Fotos\RZ\" & TextBox1.Text & ".jpg")  "" _
Then
Image1.Picture = LoadPicture("C:\Users\Besitzer\Desktop\Name\MA_Fotos\RZ\" &  _
TextBox1.Text & ".jpg")
Image1.PictureSizeMode = fmPictureSizeModeStretch
Else
Image1.Picture = LoadPicture("")
End If
End With
End Sub
Danke an alle!!
Gruß Andreas
Anzeige
AW: VBA If Then für 120 Namen
14.01.2017 10:16:06
littletramp
Hallo Andreas
In der Annahme, dass in der Spalte A die Namen der Mitarbeiter stehen, und diese nicht Name1, Name2, usw., sondern Hans Muster o.ä. heissen, würde ich folgende Lösung vorschlagen.
Ersetze die Textbox1 durch eine Combobox, die du dynamisch mit den Namen aus Spalte A auffüllst. Bei richtiger Einstellung der Eigenschaften der Combobox kann der Anwender nur noch wirklich existierende Namen eingeben/auswählen. Wählt der Anwender einen Namen aus, so erhältst über die Eigenschaft Index eine Zahl, die mit einem Offset erhöht, die Zeilennummer ergibt.
Nun kannst die Werte aus der entsprechenden Zeile in die Textboxen einfügen.
Mit dieser Lösung hast du auch den Vorteil, dass der Code bei Personalmutationen nicht angepasst werden muss.
Ich bin gerade nicht an meinem PC, doch vielleicht erstellt dir jemand anders, den Code. Falls du bis Morgen noch keine Lösung hast, werde ich es für dich machen.
Gruss Markus
Anzeige
AW: VBA If Then für 120 Namen
15.01.2017 00:28:47
Becker
@Markus,
Hallo Markus,
ich finde dein Lösungsvorschlag sehr Interesant und würde gern auf dein Angebot zurück greifen,
bin Anfänger und möchte in Zukunft auch selber etwas machen können und Anderen Helfen.
Gruß Andreas
AW: VBA If Then für 120 Namen
15.01.2017 22:27:27
littletramp
Hallo Andreas
In der Annahme, dass in der Spalte A die Namen der Mitarbeiter stehen, und diese nicht Name1, Name2, usw., sondern Hans Muster o.ä. heissen, würde ich folgende Lösung vorschlagen.
Ersetze die Textbox1 durch eine Combobox, die du dynamisch mit den Namen aus Spalte A auffüllst. Bei richtiger Einstellung der Eigenschaften der Combobox kann der Anwender nur noch wirklich existierende Namen eingeben/auswählen. Wählt der Anwender einen Namen aus, so erhältst über die Eigenschaft Index eine Zahl, die mit einem Offset erhöht, die Zeilennummer ergibt.
Nun kannst die Werte aus der entsprechenden Zeile in die Textboxen einfügen.
Mit dieser Lösung hast du auch den Vorteil, dass der Code bei Personalmutationen nicht angepasst werden muss.
Ich habe dir eine Demo mit meiner Lösung hochgeladen (https://www.herber.de/bbs/user/110573.xlsm).
Im Code verwende ich die Spalten meiner Mappe. Du musst diese bei dir entsprechend anpassen.
Hier der Code in der User Form:
Option Explicit
Private Sub UserForm_Initialize()
Dim i As Long
' Comboboxliste dynamisch mit Namen auffüllen
i = Tabelle4.Range("A" & Rows.Count).End(xlUp).Row
With ComboBox1
.RowSource = Tabelle4.Range("A2:A" & i).Address
End With
End Sub
Private Sub ComboBox1_Change()
Dim i As Long
If ComboBox1.ListIndex >= 0 Then
' Werte in Textboxen eintragen
i = ComboBox1.ListIndex + 1
TextBox1.Text = Tabelle4.Range("B" & i).Value ' hier Spalteanpassen
TextBox2.Text = Tabelle4.Range("C" & i).Value ' hier Spalteanpassen
TextBox3.Text = "C:\Pfad\" & ComboBox1.Text & ".jpg"
Else
' Werte in Textbox löschen
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End If
End Sub
Private Sub cmdOK_Click()
'TODO: Hier Code eingeben, der mit den Werten was macht
Unload Me   ' UserForm schliessen
End Sub
Gruss Markus
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige