2016-08-18 200 views
0

Wie kann es schwierig sein, Schaltflächen mit vorherigen und nächsten Einträge auf dem Benutzerformular hinzufügen? Es gibt eine Menge Quellen im Netz. Ich habe viele von ihnen ausprobiert, aber nicht gehen. Ich habe versucht, eine der auf dieser Seite erwähnten Lösungen anzupassen, ich habe versagt. :(Excel VBA Benutzerformular nächste und vorherige + erste und letzte Eintrag

In der Spalte A gibt es Artikelnummern (sagen 180) Es kann nach 180 oder so lange wie es geht. Ich möchte die vorherigen und nächsten Tasten hinzufügen. Dann Tasten, um die erste und letzte anzuzeigen . Eintritt

Mein Code ist:

Private Sub UserForm_Initialize() 

Dim k As Long, j As Long 
Dim rng As Range 
Set rng = Worksheets("BİLGİLER").Range("A180") 

k = 0: j = 1 

vyakinligi.Value = rng.Offset(k).Value 
vadsoyad.Value = rng.Offset(k, j).Value: j = j + 1 
vmeslegi.Value = rng.Offset(k, j).Value: j = j + 1 
visadresi.Value = rng.Offset(k, j).Value: j = j + 1 
vceptel.Value = rng.Offset(k, j).Value: j = j + 1 

End Sub 

'~~> Next Button 
Private Sub CommandButton7_Click() 
k = k + 1: j = 1 

If k > (Sheets("BİLGİLER").Rows.Count - 4) Then 
    MsgBox "Max rows Reached" 
    Exit Sub 
End If 

vyakinligi.Value = rng.Offset(k).Value 
vadsoyad.Value = rng.Offset(k, j).Value: j = j + 1 
vmeslegi.Value = rng.Offset(k, j).Value: j = j + 1 
visadresi.Value = rng.Offset(k, j).Value: j = j + 1 
vceptel.Value = rng.Offset(k, j).Value: j = j + 1 

End Sub 


'~~> Previous Button 
Private Sub CommandButton8_Click() 
k = k - 1: j = 1 

If k < 0 Then 
    MsgBox "1st Row Reached" 
    Exit Sub 
End If 

vyakinligi.Value = rng.Offset(k).Value 
vadsoyad.Value = rng.Offset(k, j).Value: j = j + 1 
vmeslegi.Value = rng.Offset(k, j).Value: j = j + 1 
visadresi.Value = rng.Offset(k, j).Value: j = j + 1 
vceptel.Value = rng.Offset(k, j).Value: j = j + 1 

End Sub 

Wo habe ich falsch gemacht Was kann ich tun, um die Tasten zu addieren und vorherigen zeigen, als nächstes, erste und der letzte Eintrag auf der Userform

+0

Ich glaube, dass dieser Code erfordert, dass 'j',' k' und 'rng' alle als globale Variablen definiert sind. Sie definieren sie alle in 'UserForm_Initialize()'. Versuchen Sie, die 2 Zeilen mit "Dim" an den Anfang Ihrer Datei zu verschieben. – Phylogenesis

+0

Ich werde es versuchen. Danke Kumpel ... Ich bin müde: Mit oder ohne diese Zeilen bekomme ich Fehler: Objekt erforderlich bei vyakinligi.Value = rng.Offset (k) .Value – murathoca

Antwort

0

? Ich habe es geschafft, den Code endlich zu bearbeiten (ich werde ihn hier einfügen, falls jemand etwas macht) Gebrauch davon.

Im Allgemeinen Register:

Dim Data As Variant 
Dim LastRow As Long 
Dim r As Long 

Die vorherigen und nächsten Schaltflächen:

Private Sub CommandButton7_Click() 
RangeRow xlNext 
End Sub 

Private Sub CommandButton8_Click() 
RangeRow xlPrevious 
End Sub 

Um Userform der Abschnitt initialisieren:

With Sheets("BİLGİLER") 'change the name as you wish 
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 

Data = .Range("A1:AZ" & LastRow).Value 'data range 

End With 

r = ActiveCell.Row - 1 

RangeRow r 

Und dieses Unterroutinenkode:

Sub RangeRow(ByVal Direction As Long) 
r = IIf(Direction = xlPrevious, r - 1, r + 1) 
If r < 2 Then r = 2 
If r > LastRow Then r = LastRow 

With Me 

.sira.Text = Data(r, 1) 
.tckn.Text = Data(r, 2) 
.oadsoyad.Text = Data(r, 3) 
.cinsiyet.Text = Data(r, 4) 
.dyeri.Text = Data(r, 5) 
.dyili.Text = Data(r, 6) 
.ncsn.Text = Data(r, 7) 
.babaadi.Text = Data(r, 8) 
.anneadi.Text = Data(r, 9) 
.kangrb.Text = Data(r, 10) 
.oceptel.Text = Data(r, 11) 
.oevadresi.Text = Data(r, 12) 

End With 
End Sub 

Dieser Code übernimmt die Informationen aus der zugehörigen Zeile in der Tabelle und füllt die Textfelder und Kombinationsfelder des Benutzerformulars in der Benutzerdefinition aus.

Jetzt ist es Zeit, Tasten für den ersten und letzten Eintrag zu setzen. Irgendwelche Vorschläge?

Verwandte Themen