Buscar el nombre de una hoja de excel con un inputbox y mostrarla

Primero que nada quiero ponerle a cada hoja que se crea el nombre de un usuario de hay parte mi pregunta:

Mediante un Inputbox preguntar el nombre de un usuario (el nombre de una hoja) si el nombre del usuario ya existe, muéstrame la hoja con ese nombre, sino muéstrame un msgbox que diga "No existe el usuario".

Otra cuestión mas me gustaría saber que código utilizar para dar de alta a un usuario y crear una hoja con su nombre mediante un inputbox que me evalúe el texto y busque, si ya existe el usuario (una hoja con ese nombre) mandar un mensaje de que ya existe el usuario, sino crear una hoja con el nombre del usuario.

Respuesta
1

Aquí tienes la macro que lo hace. Empieza en un archivo nuevo y con una sola pestaña. Después ejecuta la macro: (recuerda FINALIZAR y PUNTUAR mi labor)

Sub crea_hojas()

usuario = InputBox("introduzca el nombre del usuario")

If usuario = "" Then Exit Sub

For por = 1 To 10

usuario = Replace(usuario, "?", "")

usuario = Replace(usuario, "*", "")

usuario = Replace(usuario, ":", "")

usuario = Replace(usuario, "/", "")

usuario = Replace(usuario, "\", "")

usuario = Replace(usuario, "[", "")

usuario = Replace(usuario, "]", "")

Next

For p = 1 To Sheets.Count

If Sheets(p).Name = usuario Then

MsgBox "el usuario ya existe"

Sheets(usuario).Select

Exit Sub

End If

Nextx

t = MsgBox("el usuario no existe, ¿desea darlo de alta?", vbYesNo, "ATENCIÓN")

If t = vbNo Then Exit Sub

Sheets.Add after:=Sheets(Sheets.Count)

ActiveSheet.Name = usuario

End Sub

Gracias por el código supero la expectativas que tenia, solo tengo una duda, no entiendo porque utilizaste la variable POR y la variable P en el ciclo For To, podrías explicarme la razón por las que las incluiste, solo para aprender un poco mas.

Mira te dejo este código con el que intente hacer lo mismo pero no me gusto y a parte tiene errores, lo malo es que e perdido lógica porque tengo mucho que no practico la programación.

Sub CREAR()
On Error Resume Next
Dim NOMBRE As String
Dim USU As Integer
NOMBRE = InputBox("Ingresa un nombre")
NOMBRE = Replace(NOMBRE, ":", "")
NOMBRE = Replace(NOMBRE, "/", "")
NOMBRE = Replace(NOMBRE, "\", "")
NOMBRE = Replace(NOMBRE, "?", "")
NOMBRE = Replace(NOMBRE, "*", "")
NOMBRE = Replace(NOMBRE, "[", "")
NOMBRE = Replace(NOMBRE, "]", "")
Sheets(NOMBRE).Select
If ActiveSheet.Name = NOMBRE Then
Sheets("Hoja1").Select
USU = MsgBox("El usuario ya existe", vbCritical, "ERROR DE DATOS DUPLICADOS")
Else
If ActiveSheet.Name <> NOMBRE And NOMBRE <> "" Then
Sheets.Add
ActiveSheet.Name = NOMBRE
End If
End If
End Sub

Esto fue lo que había logrado je je. Con tu código ya no es necesario hacer otro modulo hace las dos cosas juntas. Gracias espero tu respuesta para resolver mis dudas, que tengas buen día.

La variable POR en realidad es una "equis" del abecedario pero al copiarla a esta web la convierte en un POR.

La variable p indica el número de indice que posee la hoja

Espero que lo entiendas y si ha quedado claro finaliza y puntúa

Muchas gracias por tu ayuda me gustaría que me gustaría que mandaras a mi correo tu nombre completo para agregarlo al apartado de agradecimientos especiales. Que tengas buen día

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas