Comentario en la clase
Bucles en VBA y el Bucle For...Next
hice esto, no quedó perfecto pero funciona, elimina la linea de la hoja que estamos ingresando como indice (que yo le puse control) y además pregunta si quiero cambiar el nombre de otra hoja, probablemente con alguno de los bucles futuros lo haga mejor: Sub CrearIndice3()
Dim Hoja_control As Worksheet
Dim Cantidad_Hojas As Integer
Dim i As Integer
Dim Resp_cambio_hoja_control As Byte
ThisWorkbook.Sheets.Add Before:=Sheets(1)
Set Hoja_control = Application.ActiveSheet
With Hoja_control.Range("A1")
.Value = "ÍNDICE CONTROL"
.Font.Bold = True
End With
Cantidad_Hojas = ThisWorkbook.Sheets.Count
For i = 1 To Cantidad_Hojas
Hoja_control.Range("A1").Offset(i, 0).Value = Sheets(i).Name
Next i
Resp_cambio_hoja_control = MsgBox("Desea asignarle un nombre a la nueva hoja?", vbQuestion + vbYesNoCancel, "Curso VBA")
If Resp_cambio_hoja_control = vbYes Then
Application.Dialogs(xlDialogWorkbookName).Show
Else
'nada
End If
ThisWorkbook.ActiveSheet.Range("a2").Delete
Dim hojaseleccionada As String
Dim Nuevonombrehojacontenido As String
Dim Respuesta As Byte
hojaseleccionada = Application.InputBox("seleccione la hoja del indice para cambiar el nombre: ", "seleccione hoja", Type:=2)
Nuevonombrehojacontenido = InputBox("introduce un nombre para la hoja: ", "cambio de nombre")
If Nuevonombrehojacontenido = "" Then
MsgBox "no ha introducido un nombre valido OPERACION CANCELADA ", vbCritical
Exit Sub
End If
ThisWorkbook.Sheets(hojaseleccionada).Activate
ActiveSheet.Name = Nuevonombrehojacontenido
Respuesta = MsgBox("el nuevo nombre de la hoja es: " & Nuevonombrehojacontenido & vbNewLine & "desea cambiar el nombre de otra hoja?", vbYesNoCancel)
If Respuesta = vbYes Then
hojaseleccionada = Application.InputBox("seleccione la hoja del indice para cambiar el nombre: ", "seleccione hoja", Type:=2)
Nuevonombrehojacontenido = InputBox("introduce un nombre para la hoja: ", "cambio de nombre")
If Nuevonombrehojacontenido = "" Then
MsgBox "no ha introducido un nombre valido OPERACION CANCELADA ", vbCritical
Exit Sub
End If
ThisWorkbook.Sheets(hojaseleccionada).Activate
ActiveSheet.Name = Nuevonombrehojacontenido
Respuesta = MsgBox("el nuevo nombre de la hoja es: " & Nuevonombrehojacontenido & vbNewLine & "desea cambiar el nombre de otra hoja?", vbYesNoCancel)
Else
MsgBox "elegiste NO"
Exit Sub
End If
End Sub
Dim Hoja_control As Worksheet
Dim Cantidad_Hojas As Integer
Dim i As Integer
Dim Resp_cambio_hoja_control As Byte
ThisWorkbook.Sheets.Add Before:=Sheets(1)
Set Hoja_control = Application.ActiveSheet
With Hoja_control.Range("A1")
.Value = "ÍNDICE CONTROL"
.Font.Bold = True
End With
Cantidad_Hojas = ThisWorkbook.Sheets.Count
For i = 1 To Cantidad_Hojas
Hoja_control.Range("A1").Offset(i, 0).Value = Sheets(i).Name
Next i
Resp_cambio_hoja_control = MsgBox("Desea asignarle un nombre a la nueva hoja?", vbQuestion + vbYesNoCancel, "Curso VBA")
If Resp_cambio_hoja_control = vbYes Then
Application.Dialogs(xlDialogWorkbookName).Show
Else
'nada
End If
ThisWorkbook.ActiveSheet.Range("a2").Delete
Dim hojaseleccionada As String
Dim Nuevonombrehojacontenido As String
Dim Respuesta As Byte
hojaseleccionada = Application.InputBox("seleccione la hoja del indice para cambiar el nombre: ", "seleccione hoja", Type:=2)
Nuevonombrehojacontenido = InputBox("introduce un nombre para la hoja: ", "cambio de nombre")
If Nuevonombrehojacontenido = "" Then
MsgBox "no ha introducido un nombre valido OPERACION CANCELADA ", vbCritical
Exit Sub
End If
ThisWorkbook.Sheets(hojaseleccionada).Activate
ActiveSheet.Name = Nuevonombrehojacontenido
Respuesta = MsgBox("el nuevo nombre de la hoja es: " & Nuevonombrehojacontenido & vbNewLine & "desea cambiar el nombre de otra hoja?", vbYesNoCancel)
If Respuesta = vbYes Then
hojaseleccionada = Application.InputBox("seleccione la hoja del indice para cambiar el nombre: ", "seleccione hoja", Type:=2)
Nuevonombrehojacontenido = InputBox("introduce un nombre para la hoja: ", "cambio de nombre")
If Nuevonombrehojacontenido = "" Then
MsgBox "no ha introducido un nombre valido OPERACION CANCELADA ", vbCritical
Exit Sub
End If
ThisWorkbook.Sheets(hojaseleccionada).Activate
ActiveSheet.Name = Nuevonombrehojacontenido
Respuesta = MsgBox("el nuevo nombre de la hoja es: " & Nuevonombrehojacontenido & vbNewLine & "desea cambiar el nombre de otra hoja?", vbYesNoCancel)
Else
MsgBox "elegiste NO"
Exit Sub
End If
End Sub