Rellenar Series con VB de excel

Hola a todos los amigos nuevamente yo por aquí resulta que tengo este código:

Sub BuscarHoja1()
'Por.DAM
'Borrar Datos antiguos
'---------------------------------
ActiveSheet.Unprotect Password:="987"
'---------------------------------
Sheets("Informe").Select
Range("A2:J30").Select
Selection.ClearContents
Selection.ClearComments
Selection.ClearFormats
Range("A2").Select
'---------------------------------
Set h1 = Sheets("Informe")
hoja = InputBox("Digite el número: ", "HOJA")
For Each h In Sheets
 If h.Name = hoja Then existe = True
Next
If existe Then
 Set h2 = Sheets(hoja)
 Sheets(hoja).Unprotect Password:="987"
 u1 = h1.Range("M" & Rows.Count).End(xlUp).Row + 1
 h2.AutoFilterMode = False
 u2 = h2.Range("M" & Rows.Count).End(xlUp).Row
 h2.Range("B5:P" & u2).AutoFilter Field:=12, Criteria1:="Parada"
 If h2.Range("M" & Rows.Count).End(xlUp).Row > 1 Then ' Tratar de colocar desde aqui el else
 h2.Range("B6:D" & u2 & ",M6:O" & u2).SpecialCells(xlCellTypeVisible).Copy _
 h1.Range("A" & h1.Range("A" & Rows.Count).End(xlUp).Row + 1)
 Range("A2").Select
 If Cells(3, 1).Value = "" Then
 Cells(2, 1) = 1
 Else
 Range("A2", Selection.End(xlDown)).Select
 Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
 Step:=1, Trend:=False
 'Range("A2").Select
 End If
 Range("A2").Select
 MsgBox "Registros ''disponibles'' copiados", vbInformation, "COPIAR DATOS"
 Else
 MsgBox "Registros ''Ningun Equipo'' Con Falla Mecanica", vbInformation, "FELICITACIONES"
 End If
 Else
 MsgBox "El número de hoja no existe", vbInformation, "COPIAR DATOS"
 Exit Sub
 End If
 h2.AutoFilterMode = False
 Sheets(hoja).Protect Password:="987"
 End Sub

y cuando lo ejecuto con F8 me ordena los números correctamente vale decir aplica el enumerado correctamente pero cuando lo ejecuto desde la hoja me sale cualquier cosa.

por favor me pueden ayudar a resolverlo ya cambie de muchas formas el código pero solo funciona correctamente con F8.

Gracias

Roberto

1 respuesta

Respuesta
1

En estas instrucciones que pusiste

Range("A2").Select
If Cells(3, 1).Value = "" Then
Cells(2, 1) = 1
Else
Range("A2", Selection.End(xlDown)).Select

Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
Step:=1, Trend:=False
'Range("A2").Select
End If
Range("A2").Select

Tienes que indicarle la hoja en donde quieres la numeración, en h1 tienes la hoja informe y en h2 tienes la hoja del día que metiste por el input.

Por ejemplo, si quieres que suceda en la hoja informe deberás ponerlo así:

h1.select

Y después tu código. Entonces ya estás en la hoja informe y todo lo que hagas sucederá en la hoja informe.

Si quieres que suceda en la hoja del día que pusiste, entonces pon

h2.select

Y después pones tu código.

Lo inserte en un lugar que creo debería ir pero nada de nada

Sub BuscarHoja1()
'Por.DAM
'Borrar Datos antiguos
'---------------------------------
ActiveSheet.Unprotect Password:="987"
'---------------------------------
Sheets("Informe").Select
Range("A2:FXD1048576").Select
Selection.ClearContents
Selection.ClearComments
Selection.ClearFormats
Range("A2").Select
'---------------------------------
Set h1 = Sheets("Informe")
hoja = InputBox("Digite el número: ", "HOJA")
For Each h In Sheets
 If h.Name = hoja Then existe = True
Next
If existe Then
 Set h2 = Sheets(hoja)
 Sheets(hoja).Unprotect Password:="987"
 u1 = h1.Range("M" & Rows.Count).End(xlUp).Row + 1
 h2.AutoFilterMode = False
 u2 = h2.Range("M" & Rows.Count).End(xlUp).Row
 h2.Range("B5:P" & u2).AutoFilter Field:=12, Criteria1:="Parada"
 If h2.Range("M" & Rows.Count).End(xlUp).Row > 1 Then ' Tratar de colocar desde aqui el else
 h2.Range("B6:D" & u2 & ",M6:O" & u2).SpecialCells(xlCellTypeVisible).Copy _
 h1.Range("A" & h1.Range("A" & Rows.Count).End(xlUp).Row + 1)
 Range("A2").Select
 If Cells(3, 1).Value = "" Then
 Cells(2, 1) = 1
 Else
 h1.Select
 Range("A2", Selection.End(xlDown)).Select
 Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
 Step:=1, Trend:=False
 'Range("A2").Select
 End If
 Range("A2").Select
 MsgBox "Registros ''disponibles'' copiados", vbInformation, "COPIAR DATOS"
 Else
 MsgBox "Registros ''Ningun Equipo'' Con Falla Mecanica", vbInformation, "FELICITACIONES"
 End If
 Else
 MsgBox "El número de hoja no existe", vbInformation, "COPIAR DATOS"
 Exit Sub
 End If
 h2.AutoFilterMode = False
 Sheets(hoja).Protect Password:="987"
 End Sub

algo mas tiene lo misterioso es que con F8 si va super bien.

Roberto

o que opinan si tal vez es mejor colocar un bucle for y que busque si tengo datos en la columna adyacente vale decir B, que me enumere desde uno, y que si encuentra solo uno que me ponga 1.

pero como lo plantearía por favor ayudenme con ideas.lo que quiero es que se enumere desde 1 hasta la cantidad de filas que pille el filtro.

gracias

Roberto

Quedaría así

Sub BuscarHoja()
'Por.DAM
Set h1 = Sheets("Informe")
hoja = InputBox("Digite el número: ", "HOJA")
For Each h In Sheets
  If h.Name = hoja Then existe = True
Next
If existe Then
  Set h2 = Sheets(hoja)
  u1 = h1.Range("M" & Rows.Count).End(xlUp).Row + 1
  h2.AutoFilterMode = False
  u2 = h2.Range("M" & Rows.Count).End(xlUp).Row
  h2.Range("B1:P" & u2).AutoFilter Field:=12, Criteria1:="Operable"
  If h2.Range("M" & Rows.Count).End(xlUp).Row > 5 Then
    h2.Range("B6:D" & u2 & ",M6:M" & u2 & ",O6:P" & u2).SpecialCells(xlCellTypeVisible).Copy _
    h1.Range("B" & h1.Range("B" & Rows.Count).End(xlUp).Row + 1)
    u = h1.Range("B" & Rows.Count).End(xlUp).Row
    h1.Range("A2") = 1
    If u > 2 Then h1.Range("A3") = 2
    If u > 3 Then h1.Range("A2:A3").AutoFill Destination:=Range("A2:A" & u)
  End If
  h2.AutoFilterMode = False
  MsgBox "Registros ''disponibles'' copiados", vbInformation, "COPIAR DATOS"
Else
  MsgBox "El número de hoja no existe", vbInformation, "COPIAR DATOS"
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas