ElsaMatilde, por favor auxíliame...

Hola Elsa espero te encuentres bien, mira mi problema es el siguiente: me he descargado uno de tus ejemplos de macros para utilizarlo en mi trabajo en donde debo registrar la consulta de los médicos por consultorio y usando un UserForm capturar los datos que se ingrasan para el registro de la consulta diaria, la macro esta incluida en tu ejemplo de macros3 y es tiene el siguiente código:
Private Sub cmdAceptar_Click()
Dim CeldaInicial As Variant
Dim col As Integer
Dim fila As Integer
CeldaInicial = "A1"
Set CeldaInicial = Range(CeldaInicial)
col = CeldaInicial.Column
    'Busca cuál es la última fila
If CeldaInicial.Offset(1, 0).Value = "" Then
fila = 2
Else
fila = CeldaInicial.End(xlDown).Row + 1
End If
    'Comienza a copiar los valores del UserForm a la hoja
Cells(fila, col).Value = TextBox1.Value
Cells(fila, col + 1).Value = TextBox2.Value
Cells(fila, col + 2).Value = TextBox3.Value
Set CeldaInicial = Nothing
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox1.SetFocus
End Sub
La cuestión aquí es que tomando tu ejemplo digamos que los datos de la columna "codigo" determinen la hoja en la que vaciaran los datos del UserForm, te lo expongo de la siguiente manera: si yo ingreso en el TextBox de "codigo" un 2 los datos de todo el UserForm se listen en la "Hoja 2" y si ingreso un 3 los datos se listen en la "Hoja 3" y así sucesivamente, he hecho algunos cambios al código de la macro, pero los datos no me los asigna en la fila subsecuente de las hojas, si capturo datos para la Hoja 2 me asigna la fila 2 pero si el siguiente dato es para la Hoja 3 me lo registra en la fila 3 de la Hoja 3 no en la 2, no sé si me explico, pero espero me puedas entender y ayudar ya que esta macro me ahorraría mucho tiempo laboral. Espero tu respuesta y ayuda, que sigas bien y hasta pronto.

1 respuesta

Respuesta
1
Por lo que creo entender, estás copiando datos en distintas hojas.
Entonces necesitarás 2 variables para guardar la fila, por ej: fila2 para la hoja2 y fila3 para la hoja3.
Y para buscar la primer fila libre podes utilizar esta única línea, para cada variable:
fila2= Sheets("Hoja2").Range("A65536").End(xlup).Row +1
fila3 = Sheets("Hoja3")........................................... lo mismo que la anterior.
Hola Nuevamente Elsa, muchas gracias por la prontitud de tu respuesta, solo quiero comentarte que a pesar de que extendí demasiado la exposición de mi problema tal vez no haya quedado muy claro, te pongo la rutina que he usado en la macro creada por ti y así pueda ser más detallado el problema...
Option Explicit
Private Sub cmdAceptar_Click()
Dim CeldaInicial As Variant
Dim col As Integer
Dim fila As Integer
CeldaInicial = "A1"
Set CeldaInicial = Range(CeldaInicial)
col = CeldaInicial.Column
If TextBox2.Value = "2" Then
Sheets("Hoja2").Select
End If
If TextBox2.Value = "3" Then
Sheets("Hoja3").Select
End If

    'Busca cuál es la última fila
If CeldaInicial.Offset(1, 0).Value = "" Then
fila = 2
Else
fila = CeldaInicial.End(xlDown).Row + 1
End If
    'Comienza a copiar los valores del UserForm a la hoja
Cells(fila, col).Value = TextBox1.Value
Cells(fila, col + 1).Value = TextBox2.Value
Cells(fila, col + 2).Value = TextBox3.Value
Set CeldaInicial = Nothing
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox1.SetFocus
End Sub
He puesto con negritas la modificación que yo hice a la rutina, muchas gracias de antemano, que sigas bien.
Primero tenés que seleccionar la hoja y luego establecer la fila, según la hoja elegida.
Es decir que el orden es este:
CeldaInicial = "A1"
If TextBox2.Value = "2" Then
Sheets("Hoja2").Select
End If
If TextBox2.Value = "3" Then
Sheets("Hoja3").Select
End If
Set CeldaInicial = Range(CeldaInicial)
col = CeldaInicial.Column

'Busca cuál...
Hola Elsa, no me resta más que agradecerte la infinita ayuda que me has dado con tu asesoría, ha quedado inmejorable la funcionalidad de mi proyecto gracias a ti, cuidate mucho y muchísimas gracias nuevamente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas