2017-02-19 1 views
0

Ich habe eine Tabelle mit der folgenden Information "B" Emp. Name, "C" Position, Ort "D", Gehalt "E", in dem ich einen Find cmd Button und andere Cmd Buttons zum Aktualisieren von Informationen erstellen möchte. so habe ich die folgenden Codes für die Suche verwendet und es funktioniert sehr gut, aber die Aktualisierung Commend arbeiten falsch, wenn ich nach bestimmten Informationen suchen, zeigt es die erforderlichen Informationen, aber wenn Sie die Änderung in das Formular und drücken Sie Update, ändern Sie die erste Zeile von die Tabelle nicht die Suchzeile. Also bitte deine Hilfe.Aktualisierung Gesuchte Informationen

Private Sub Search_Click() 
Dim FindRow 
Dim cRow As String 
On Error Resume Next 
cRow = Me.txtSearch.Value 
'find the name of the employee written on the search box in column B 
Set FindRow = Sheets("Sheet1").Range("B:B").Find(what:=cRow, LookIn:=xlValues) 
'add the values to the userform 
Me.txtname.Value = FindRow 
Me.txtposition.Value = FindRow.Offset(0, 1) 
Me.txtlocation.Value = FindRow.Offset(0, 2) 
Me.txtbasicsalary.Value = FindRow.Offset(0, 3) 
End Sub 

Sub UpdateInfo_Click() 
Dim FindRow 
Dim fname As String 
Dim lname As String 
FindRow = 2 
fname = txtname.Text 
Cells(FindRow, 2).Value = fname 
lname = txtposition.Text 
Cells(FindRow, 3).Value = lname 
End Sub 

Antwort

0

Zuerst müssen Sie Dim FindRow As Range außerhalb der Unter der Schaltfläche, aber am User_Form Modulebene, so dass alle Sub s im user_form lesen und die gleiche Variable ändern.

Zweitens müssen Sie sicherstellen, Find war erfolgreich Abrufen einer Übereinstimmung in "Sheet1", durch If Not FindRow Is Nothing Then.

Drittens in Ihrem UpdateInfo_Click Unter, stellen Sie sicher, dass Sie Search_Click vor lief, und dass FindRow konnte eine Übereinstimmung in Spalte B finden, dann können Sie die Werte ändern FindRow.Row verwenden.

Zuletzt verwenden Sie weiter Sheets("Sheet1") vor Ihrem Cells, um es vollständig zu qualifizieren, genau wie Sie in Set FindRow = Sheets("Sheet1").Range("B:B").Find(what:=cRow, LookIn:=xlValues) getan haben.

-Code

Option Explicit 

Dim FindRow As Range 

Private Sub Search_Click() 

Dim cRow As String 

On Error Resume Next 
cRow = Me.txtSearch.Value 
'find the name of the employee written on the search box in column B 
Set FindRow = Sheets("Sheet1").Range("B:B").Find(what:=cRow, LookIn:=xlValues) 

If Not FindRow Is Nothing Then '<-- successful find 
    'add the values to the userform 
    Me.txtname.Value = FindRow.Value 
    Me.txtposition.Value = FindRow.Offset(0, 1).Value 
    Me.txtlocation.Value = FindRow.Offset(0, 2).Value 
    Me.txtbasicsalary.Value = FindRow.Offset(0, 3).Value 
End If 

End Sub 

'====================================================================== 

Sub UpdateInfo_Click() 

Dim fname As String 
Dim lname As String 

fname = Me.txtname.Text 
lname = Me.txtposition.Text 

If Not FindRow Is Nothing Then '<-- check if there was a successful find in the "Search" sub 
    Sheets("Sheet1").Cells(FindRow.Row, 2).Value = fname 
    Sheets("Sheet1").Cells(FindRow.Row, 3).Value = lname 

    Set FindRow = Nothing '<-- clear after use 
End If 

End Sub 

Wie als "ANSWER" markieren, siehe Bild unten:

enter image description here

+0

Vielen Dank Shai, es jetzt sehr gut funktioniert, ich sehr zu schätzen wissen es. –

+0

@NabilAmer du bist willkommen, bitte als "Antwort" markieren, indem du auf das ** V ** neben meiner Antwort klickst (es sollte grün werden) –

+0

hi Shai, bitte sei informiert, dass ich jeden Teil dieser Seite selbst suche im Abstimmungs-Tab aber nichts gefunden. Vielleicht gibt es ein Problem mit dieser Seite !? –

Verwandte Themen