Nombre de sheets

Hola dam te hago una consulta, hay alguna forma de que este macro el nombre el nombre de la sheets activa y trabaje en ella para después enviar los datos a la hoja2? Me explico: lo que pasa es que cuando habro el macro tengo tengo q abrir el archivo excel al cual le aplicare el macro, entonces este puede que venga con otro nombre (y no el nombre hoja1), entonces como el código del macro dice esto:

Sub creaplanilla_MI()
Set hactual = Sheets("Hoja1")
Set hdest = Sheets("Hoja2")

Me obliga a tener que tener como nombre el primero a hoja1. Se entiende?

saludos

1 Respuesta

Respuesta
1

Sería algo así

nombre_hoja = activesheets.name

Set hactual = sheets(nombre_hoja)

Prueba y me dices

Saludos. Dam

En el código hace referencia a hactual, todos esos datos igual hay que cambiarlos?, ya que si cambio solo los del set hactual me manda a depurar esa linea.

Sub creaplanilla_MI()


Set hactual = Sheets("Hoja1")
Set hdest = Sheets("Hoja2")


hactual.Select
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) = Format("11/2012", "mm\/yyyy") '----> CAMBIAR AQUÍ LA FECHA"
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
End Sub

Me puedes explicar con más detalle lo que necesitas y paso a pasito, para poder entenderte.

Saludos. Dam

Hola

Necesito 2 cosas Dam:

1) Lo que quiero que haga el macro es que al abrir la planilla en la cual ejecutare el macro, me tome la primera hoja (Hoja1 interna) para enviar los datos a la hoja2:

si te fijas en este ejemplo, el nombre de la hoja es "principal", pero internamente sigue siendo hoja 1, eso me sirve de manera que sin importar que cambie de nombre, siga tomando la primera hoja. Ya que de no ser asi, estoy obligado a que siempre tenga el nombre "Hoja1" la primera Hoja.

2) lo otro es saber si se puede crear una nueva Sheets al momento de ejecutar el macro. Esto es para que no me obligue a tener una Sheets llamada "Hoja2".

saludos.

Cambia en la macro, estas líneas

Set hactual = Sheets("Hoja1")
Set hdest = Sheets("Hoja2")

Por estas:

Set hactual = Sheets(1)
Worksheets.Add
destino = ActiveSheet.Name
Set hdest = Sheets(destino)

Prueba y si es lo que necesitas, podrías finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas