Ingresar datos según fecha

Hola, estoy haciendo una macro para llevar una estadística en tiempo de respuesta, y necesito que los datos que se ingresen se vayan a diferentes hojas según el mes del registro. El código funciona bien para la hoja1, pero no se como hacerlo con las otras hojas.

me podrían ayudar, se los agradecería.

Private Sub CommandButton2_Click()
Range("A" & Cells.Rows.Count).End(xlUp).Offset(1).Select
ActiveCell = DTPicker1.Value
ActiveCell.Offset(0, 1) = TextBox1.Value
ActiveCell.Offset(0, 2) = TextBox2.Value
ActiveCell.Offset(0, 3) = TextBox3.Value
ActiveCell.Offset(0, 4) = ComboBox1.Value
ActiveCell.Offset(0, 5) = ComboBox2.Value
DTPicker1.SetFocus
End Sub

1 respuesta

Respuesta
1

Si las hojas tienen x nombre el nro del mes podes tomar esa información de la fecha seleccionada:

mesi = month(DTPicker1.value)

sheets(mesi).select

Y luego siguen tus instrucciones...

Incluso no es necesario seleccionar la hoja, pero eso requiere de más explicaciones. Mejor me aclaras primero cómo se llaman las hojas de destino.

Hola Elsa:

Muchas gracias por tu pronta respuesta, te aclaro, las hojas de destino llevan como nombre los meses del año desde Enero a Diciembre. Yo soy nuevo en esto de las macros y el código que adjunte lo fui sacando de otros ejemplos tuyos de un tiempo atrás.

si me pudieras enviar el código con los meses del año te lo agradecería mucho.

Que Dios te Bendiga.

Víctor.

Entonces hay que convertir el nro de mes de la fecha seleccionada en nombre de mes para que coincida con los nombres de hojas:

Tu rutina tiene que empezar así:

Private Sub CommandButton2_Click()

'ajustada x Elsamatilde
Range("A" & Cells.Rows.Count).End(xlUp).Offset(1).Select
'paso a letras el nro de mes
listaMes = Array("Enero", "Febrero", "Marzo")
mesi = Month(DTPicker1.Value)
nbremes = listaMes(mesi - 1)
Sheets(nbremes).Select

'aquí siguen tus instrucciones
ActiveCell = DTPicker1.Value


Antes del End Sub tenés que volver a tu hoja.


Para evitar el pase de hojas, no la selecciones, solo mencionala en cada línea de pase:

Sheets(nbremes).Cells(activecell.row,1) = DTPicker1.value

Sheets(nbremes). Cells(activecell. Row, 2) = "el dato que va en la col B"

Y así con cada línea.

PD) No dejes de visitar la sección Manuales de mi sitio, podés descargar las demos que traen algunos capítulos desarrollados, en especial el de Programación VBA

Sdos

Elsa


Elsa el Código está buenísimo, pero los datos no se agregan en la primera celda vacía, si no que se agregan en la celda 20.

el código lo agregué tal cual lo escribiste.

gracias por tu ayuda.

Esta línea quítala de donde está y colocala después de seleccionar la hoja elegida

Range("A" & Cells.Rows.Count).End(xlUp).Offset(1).Select

Ahora, si vas a trabajar con la idea de NO seleccionar la hoja, se busca la primer fila libre y esa variable se utiliza en la instrucción Cells(row, col)

Te quedará todo así:

Private Sub CommandButton2_Click()
'ajustada x Elsamatilde
'paso a letras el nro de mes
listaMes = Array("Enero", "Febrero", "Marzo")
mesi = Month(DTPicker1.Value)
nbremes = listaMes(mesi - 1)
'sin seleccionar la hoja
libre = Sheets(nbremes).Range("A65536").End(xlUp).Row + 1
Sheets(nbremes).Cells(libre, 1) = DTPicker1.Value
Sheets(nbremes).Cells(libre, 2) = "el dato que va en la col B"
'aquí siguen tus instrucciones
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas