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

SVERWEIS

SVERWEIS
Thomas
Hallo liebe VBA Spezialisten!
Ich benötige bitte euere Hilfe!
Über eine Benutzerplattform erfasse ich Daten lt. folgenden VBA-Code. Ich suche über die Combo- _ Box eine Person aus, trage den Wert in ein TextBox ein und klicke auf einen Optionsbutton. Die Daten werden dann in dem richtigen Feld eingelesen. Nun möchte ich aber, dass in einen Bezeichnungsfeld, oder weiteren Textfeld der berechnete Wert gleich rechts daneben mit angezeigt wird. Wie muss unten angegebener Code ergänzt werden, damit das geschieht?

Private Sub cmderfassen_Click()
Dim frm As UserForm
Dim iKenn As Integer
Dim index As Long
Dim Nachname As String
Dim Werte As Variant
Set frm = UserForm2
index = frm.ComboBox1.ListIndex
On Error Resume Next
Nachname = frm.ComboBox1.List(index)
Werte = frm.TextBox1.Text
If frm.OptionButton1.Value Then iKenn = 1  'FO
If frm.OptionButton2.Value Then iKenn = 2  'BO
If frm.OptionButton3.Value Then iKenn = 8  'Prod.
Sheets("Daten").Activate
Columns("A:A").Select
On Error GoTo fehler
Selection.Find(What:=Nachname, After:=ActiveCell, LookIn:=xlValues _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Select Case iKenn
Case 1
ActiveCell.Offset(0, 3).Select
Case 2
ActiveCell.Offset(0, 5).Select
Case 3
ActiveCell.Offset(0, 3).Select
Case Else
MsgBox "Fehlursache konnte nicht ermittelt werden!"
End Select
ActiveCell.Value = Werte
Exit Sub
fehler:
MsgBox "Es konnte keine Mitarbeiter gefunden werden!"
End Sub

Vielen Dank vorab für euere Hilfe!!!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: SVERWEIS
27.05.2012 14:05:14
fcs
Hallo Thomas,
sollte so funktionieren: nach dem Eintragen von "Werte" das Blatt neu berechnen und dann Wert aus der Zelle rechts neben der aktiven Zelle in zusätzliche Textbox einlesen.
  ActiveCell.Value = Werte
ActiveSheet.Calculate
Me.TextBoxErgebnis = ActiveSheet.Offset(0, 1).Value
Exit Sub
fehler:
MsgBox "Es konnte keine Mitarbeiter gefunden werden!"
End Sub
Gruß
Franz
AW: SVERWEIS
27.05.2012 20:01:15
Thomas
Hallo Franz!
Danke für deine Antwort.
Habe Textbox eingefügt und deinen Code ergänzt. Leider ohne Erfolg. :-(((.
Es kommt die Meldung "Es konnte kein Mitarbeiter gefunden werden!"
Anzeige
AW: SVERWEIS
27.05.2012 21:17:30
fcs
Hallo Thomas,
da hatte ich einen Schreibfehler eingebaut.
ActiveSheet statt ActiveCell.Offset(0,1).Value
Generell gibt es in deinem Makro für das Erfassen/Eintragen der Daten aber noch etliche kleine Ecken, die zu Fehlern im Ablauf führen können. Insbesondere das "On Error Resume Next" kann leicht zu unerwarteten Ergebnisssen führen.
Ich hab das mal versucht zu bereinigen und dabei die Fehlerbehandlung verfeinert und auch die "unschönen" Select und ActiveCell bereinigt, indem bei der Suche nach dem Namen in Spalte A das neu deklarierte Range-Objekt Zelle gesetzt wird.
Noch ein Hinweis:
Bei Code innerhalb des Userforms muss du nicht unbedingt eine Userform-Variable für dieses UF deklarieren (hier frm). Stattdessen kannst du die System-Objekt-Variable Me verwenden.
Gruß
Franz
Private Sub cmderfassen_Click()
Dim frm As UserForm
Dim iKenn As Integer
Dim index As Long
Dim Nachname As String
Dim Werte As Double
Dim Zelle As Range
On Error GoTo fehler
Set frm = UserForm2
index = frm.ComboBox1.ListIndex
If index = -1 Then
MsgBox "Es wurde kein Mitarbeitername gewählt"
Exit Sub
End If
Nachname = frm.ComboBox1.List(index)
With frm.TextBox1
If IsNumeric(.Text) Then
Werte = CDbl(frm.TextBox1.Text)
Else
MsgBox "Für Werte dürfen nur Zahlen eingegeben werden!"
Exit Sub
End If
End With
If frm.OptionButton1.Value Then iKenn = 1  'FO
If frm.OptionButton2.Value Then iKenn = 2  'BO
If frm.OptionButton3.Value Then iKenn = 3  'Prod.
Sheets("Daten").Activate
With Sheets("Daten").Columns("A:A")
Set Zelle = .Find(What:=Nachname, After:=.Range("A1"), _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False)
End With
If Zelle Is Nothing Then
MsgBox "Es konnte keine Mitarbeiter gefunden werden!"
Else
Select Case iKenn
Case 1
Set Zelle = Zelle.Offset(0, 3)
Case 2
Set Zelle = Zelle.Offset(0, 5)
Case 3
Set Zelle = Zelle.Offset(0, 8)
Case Else
MsgBox "Sie haben kein Auswahlkriterium getroffen!"
Exit Sub
End Select
Zelle.Value = Werte
ActiveSheet.Calculate
TextBoxErgebnis = Zelle.Offset(0, 1).Value
End If
Err.Clear
Exit Sub
fehler:
MsgBox "Fehler-Nr.: " & Err.Number & vbLf & Err.Description
End Sub

Anzeige
AW: SVERWEIS
27.05.2012 21:39:57
Thomas
Es funktioniert!
Vielen Dank Franz für deine Mühen!!!
Wenns "funktioniert" ist Schluss !! o.w.T.
27.05.2012 22:28:01
Matze,Matthias

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige