userform....de fila en fila

12/07/2006 - 21:05 por MARCO6325 | Informe spam
Buenas a todo el grupo...
tengo un userform que copia los datos de una hoja en varios texbox al
activar un comandbutton, quiero crear un comandbutton que se llame
Siguiente, para que cargue los datos de la siguiente fila, y cuando no
existan mas datos me de un mensaje q me diga que no hay mas datos...les
escribo el código que copia los datos de la hoja al userform:

Private Sub CommandButton3_Click()
Sheets("..").Select
TextBox1.Value = Range("a4")
TextBox2.Value = Range("b4")
TextBox3.Value = Range("c4")
TextBox4.Value = Range("d4")
TextBox5.Value = Range("j4")
TextBox6.Value = Range("g4")
TextBox7.Value = Range("h4")
TextBox8.Value = Range("i4")
TextBox9.Value = Range("e4")
TextBox10.Value = Range("f4")
TextBox11.Value = Range("k4")
TextBox12.Value = Range("k4")
TextBox13.Value = Range("a2")
End Sub
quiero que si ejecute el comandbutton llamado siguiente, me cambie los
datos por los de la fila 5, y asi sucesivamentey si es posible,
crear otro para devolverme a la fila anterior
muchas gracias de antemano por su atención
 

Leer las respuestas

#1 klomkbock
13/07/2006 - 00:03 | Informe spam
Hola Marco

Mira a ver si te vale lo siguiente, aunque no te fies mucho y ve con
tiento.

El siguiente codigo presupone un userform con 13 textbox, de los cuales 12
se rellenan con (incialmente) los datos de A:K de la fila de la celda
activa, y el 13 siempre con "A2" segun tu demanda, tambien presupone dos
commandbutton ( el 1 =>anterior y el 3 => siguiente) y un tercero para
cancelar (=> el 2)

Option Explicit
Dim y As Long, x As Byte
Private Sub CommandButton1_Click()
With Worksheets("Hoja1")
If y < 5 Then
CommandButton1.Enabled = False
MsgBox ("No hay registros anteriores")
Exit Sub
Else
y = y - 1
End If
For x = 1 To 12
Me.Controls("TextBox" & x) = .Range("a" & y)(1, x).Value
Next
TextBox13 = .Range("a2").Value
End With
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub CommandButton3_Click()
With Worksheets("Hoja1")
If y > .[a65536].End(xlUp).Row - 1 Then
CommandButton3.Enabled = False
MsgBox ("No hay registros posteriores")
Exit Sub
Else
y = y + 1
End If
For x = 1 To 12
Me.Controls("TextBox" & x) = .Range("a" & y)(1, x).Value
Next
TextBox13 = .Range("a2").Value
End With
End Sub
Private Sub UserForm_Activate()
Application.ScreenUpdating = False
With Worksheets("Hoja1")
y = ActiveCell.Row
If y < 5 Then
y = 4
CommandButton1.Enabled = False
ElseIf y > .[a65536].End(xlUp).Row Then
y = .[a65536].End(xlUp).Row
CommandButton3.Enabled = False
Else
CommandButton1.Enabled = True
CommandButton3.Enabled = True
End If
For x = 1 To 12
Me.Controls("TextBox" & x) = .Range("a" & y)(1, x).Value
Next
TextBox13 = .Range("a2").Value
End With
Application.ScreenUpdating = True
End Sub

Espero que te sirva, y lo dicho, ve con ojo, pues no soy un experto en
estas lides.

Un saludo y hasta pronto.
Ivan

Preguntas similares