Ayuda con macro

Hola Dam, quería que me ayuedes con una cosa, como se puede cambiar este código para que el hdest no sea en la sheet (2), sino que sea en una pestaña con un nombre fijo, ya sea "planilla_MI", y que se sitúe en la segunda intentar. Saludos

Sub creaplanilla_MI()
Set hactual = Sheets(1)
Set hdest = Sheets(2)
hactual.Select
If Not IsDate(hactual.Range("A1")) Then
MsgBox "Ingresar la fecha que desea procesar formato mm/aaaa en la celda: A1", vbCritical, "Macro Planilla - MI"
Range("A1").Select
Exit Sub
End If
ufila = Range("A" & Rows.Count).End(xlUp).Row
ucol = ActiveCell.SpecialCells(xlLastCell).Column
hdest.Columns("C").NumberFormat = "mm\/yyyy"
j = 1
For k = 34 To ucol
If IsNumeric(hactual.Cells(1, k)) And hactual.Cells(1, k) <> "" And hactual.Cells(2, k) = "MI" Then
For i = 7 To ufila
If Cells(i, 1) <> "" Then
hdest.Cells(j, 1) = "'" & hactual.Cells(1, k)
hdest.Cells(j, 2) = "'" & hactual.Cells(i, 1)
hdest.Cells(j, 3) = hactual.Cells(1, 1)
If hactual.Cells(i, k) = "" _
Or Not IsNumeric(hactual.Cells(i, k)) Then
hdest.Cells(j, 4) = 0
Else
hdest.Cells(j, 4) = hactual.Cells(i, k) * 1000
End If
j = j + 1
End If
Next
End If
Next
MsgBox ("**Datos de MARCAS INTERNACIONALES importados en la 2da Hoja**")
End Sub

1 Respuesta

Respuesta
1

Cambia esta línea

Set hdest = Sheets(2)

Por esta

Set hdest = Sheets("planilla_MI")

Saludos. Dam
Si es lo que necesitas.

Me manda error de ejecución en esa linea, al parecer es porque no hay ninguna hoja con ese nombre. Lo ideal seria que si no encuentre una hoja con ese nombre, que la cree.

Entonces quedaría así

Reemplaza esta línea

Set hdest = Sheets("planilla_MI")

Por estas

On Error Resume Next
Set hdest = Sheets("planilla_MI")
If Err.Number <> 0 Then
Sheets.Add
ActiveSheet.Name = "planilla_MI"
Err.Number = 0
End If

Saludos. Dam
Si es lo que necesitas.

No me funciona. Te explico lo que realiza con el código que me dejaste:

Si no encuentra fecha en al celda A1, igual crea la hoja "Planilla_MI" en la primera HOJA, y cuando la fecha esta ingresada y se ejecuta el macro, termina sin problemas, osea sin errores pero la HOJA "Planilla_MI" no tiene ningún dato.

---------CÓDIGO-------------

Sub creaplanilla_MI()
Set hactual = Sheets(1)
On Error Resume Next
Set hdest = Sheets("planilla_MI")
If Err.Number <> 0 Then
Sheets.Add
ActiveSheet.Name = "planilla_MI"
Err.Number = 0
End If
hactual.Select
If Not IsDate(hactual.Range("A1")) Then
MsgBox "Ingresar la fecha que desea procesar formato mm/aaaa en la celda: A1", vbCritical, "Macro Planilla - MI"
Range("A1").Select
Exit Sub
End If
ufila = Range("A" & Rows.Count).End(xlUp).Row
ucol = ActiveCell.SpecialCells(xlLastCell).Column
hdest.Columns("C").NumberFormat = "mm\/yyyy"
j = 1
For k = 34 To ucol
If IsNumeric(hactual.Cells(1, k)) And hactual.Cells(1, k) <> "" And hactual.Cells(2, k) = "MI" Then
For i = 7 To ufila
If Cells(i, 1) <> "" Then
hdest.Cells(j, 1) = "'" & hactual.Cells(1, k)
hdest.Cells(j, 2) = "'" & hactual.Cells(i, 1)
hdest.Cells(j, 3) = hactual.Cells(1, 1)
If hactual.Cells(i, k) = "" _
Or Not IsNumeric(hactual.Cells(i, k)) Then
hdest.Cells(j, 4) = 0
Else
hdest.Cells(j, 4) = hactual.Cells(i, k) * 1000
End If
j = j + 1
End If
Next
End If
Next
MsgBox ("**Datos de MARCAS INTERNACIONALES importados en la 2da Hoja**")
End Sub

Saludos DAM.

Lo que pasa es qeu así está la logica de tu código, primero crea la hoja y después preguntas por la fecha, yo esa parte no la definí

Primero debes preguntar por la fecha y después pones el código que te envié.

Si no hay datos en la hoja destino, tienes que ejecutar la macro en modo debug y ver paso a paso por qué no se llena la hoja.

Saludos. Dam

Si te sirven los tips, podrías finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas