Error de compilación:"Next sin For"
Perdona que vuelva a "molestarte"... Como siempre, antes de hacer una consulta, hago una visita a las respuestas en la web de todoexpertos, y intento que "funcione", aunque no es fácil... Te comento, he encontrado el siguiente código:
Private Sub UserForm_Activate()
Dim SheetData() As String
Dim ShtCnt As Integer
Dim ShtNum As Integer
Dim Sht As Object
Dim ListPos As Integer
Set OriginalSheet = ActiveSheet
ShtCnt = ActiveWorkbook.Sheets.Count
ReDim SheetData(1 To ShtCnt, 1 To 4)
ShtNum = 1
For Each Sht In ActiveWorkbook.Sheets
If Sht.Name = ActiveSheet.Name Then
ListPos = ShtNum - 1
SheetData(ShtNum, 1) = Sht.Name
Select Case TypeName(Sht)
Case "hoja de trabajo"
SheetData(ShtNum, 2) = "Hoja"
SheetData(ShtNum, 3) = "N/A"
Application.CountA (Sht.Cells)
Case "Chart"
SheetData(ShtNum, 2) = "Grafico"
SheetData(ShtNum, 3) = "N/A"
Case "DialogSheet"
SheetData(ShtNum, 2) = "Dialogo"
SheetData(ShtNum, 3) = "N/A"
End Select
If Sht.Visible Then
SheetData(ShtNum, 4) = "Verdadero"
Else
SheetData(ShtNum, 4) = "Falso"
End If
ShtNum = ShtNum + 1
Next Sht
With ListBox1
.ColumnWidths = "100 pt;30 pt;40 pt;50 pt"
.List = SheetData
.ListIndex = ListPos
End With
End Sub
El código anterior, literalmente, lo he pegado a mi archivo excel y me da error de compilación: Next sin for (negrita en el código)
La idea que tengo y basándome en el código anterior es:
Tengo un libro excel "Programa gestion ambiental" que tiene bastantes hojas: Hoja1=Registro, Hoja2=Objetivo1, Hoja3=Objetivo2,.......entonces a partir del codigo anterior, si es posible? Y utilizando la nomenclatura del objetivo (TIPO: XX-YY, donde XX son números correlativos y YY hace referencia al año, ¿por ejemplo 08 seria 2008) desde la Hoja1="Registro" me direccione a la hoja del objetivo XX? Seria mejor utilizar en este caso un combobox, antes que un listbox (como describe el código anterior), ¿para la búsqueda?
Private Sub UserForm_Activate()
Dim SheetData() As String
Dim ShtCnt As Integer
Dim ShtNum As Integer
Dim Sht As Object
Dim ListPos As Integer
Set OriginalSheet = ActiveSheet
ShtCnt = ActiveWorkbook.Sheets.Count
ReDim SheetData(1 To ShtCnt, 1 To 4)
ShtNum = 1
For Each Sht In ActiveWorkbook.Sheets
If Sht.Name = ActiveSheet.Name Then
ListPos = ShtNum - 1
SheetData(ShtNum, 1) = Sht.Name
Select Case TypeName(Sht)
Case "hoja de trabajo"
SheetData(ShtNum, 2) = "Hoja"
SheetData(ShtNum, 3) = "N/A"
Application.CountA (Sht.Cells)
Case "Chart"
SheetData(ShtNum, 2) = "Grafico"
SheetData(ShtNum, 3) = "N/A"
Case "DialogSheet"
SheetData(ShtNum, 2) = "Dialogo"
SheetData(ShtNum, 3) = "N/A"
End Select
If Sht.Visible Then
SheetData(ShtNum, 4) = "Verdadero"
Else
SheetData(ShtNum, 4) = "Falso"
End If
ShtNum = ShtNum + 1
Next Sht
With ListBox1
.ColumnWidths = "100 pt;30 pt;40 pt;50 pt"
.List = SheetData
.ListIndex = ListPos
End With
End Sub
El código anterior, literalmente, lo he pegado a mi archivo excel y me da error de compilación: Next sin for (negrita en el código)
La idea que tengo y basándome en el código anterior es:
Tengo un libro excel "Programa gestion ambiental" que tiene bastantes hojas: Hoja1=Registro, Hoja2=Objetivo1, Hoja3=Objetivo2,.......entonces a partir del codigo anterior, si es posible? Y utilizando la nomenclatura del objetivo (TIPO: XX-YY, donde XX son números correlativos y YY hace referencia al año, ¿por ejemplo 08 seria 2008) desde la Hoja1="Registro" me direccione a la hoja del objetivo XX? Seria mejor utilizar en este caso un combobox, antes que un listbox (como describe el código anterior), ¿para la búsqueda?
1 respuesta
Respuesta de Juan Carlos González Chavarría
1