Con la siguiente programacion en Visual Basic como puedo efectuarla con numeros en vez de dia,tarde y noche?

HOJA 1
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strToCall As String
strToCall = Range("C1").Value
On Error Resume Next
If Target.Address = "$C$1" Then Application.Run strToCall
On Error GoTo 0
End Sub
-------------------
MODULO 1
Option Explicit
Private Sub dia()
MsgBox "Buenos Dias"
End Sub
Private Sub tarde()
MsgBox "Buenas Tardes"
End Sub
Private Sub noche()
MsgBox "

1 Respuesta

Respuesta
1

Primero que todo un saludo. Imagino que lo que deseas es una macro para saludar de acuerdo a la hora. De ser así te recomiendo lo siguiente:

Modulo 1

Sub Auto_Open()

Dim hora as double

Dim saludo as string 

Hora = (now - int(now)) * 24

Select case hora 

Case 6 to 12 

Saludo = "buenos días"

Case 13 to 18

Saludo = "buenas tardes" 

Case else 

Saludo = "buenas noches" 

End select

Msgbox saludo

End sub 

Marcos de antemano agradezco mucho tu tiempo y ayuda. La información que me has servido me ha ayudado a despejar mi duda en esta Macro, sera posible que te pueda consultar con respecto a otra Macro similar en la cual me encuentro atorado... Gracias y un Saludo se ve que eres un experto en el tema.

Me alegra saber que te fue útil la información. No me considero un experto cómo tal je je pero tengo un par de años experimentando en vba y he aprendido un poco. Si puedo apoyarte adelante, comenta tu pregunta y trataremos de buscar una solución.

Ok, muchas gracias, mira ESTA ES LA DUDA QUE TE CITABA,estoy atorado en la siguiente macro es muy similar tengo la siguiente programacion: (Antes te comento tengo un combo que crees desde la pagina de excel en validacion de Datos - dicho combo trae como opciones el 1,2 y 3)

Pero al tratar de programar con en la primer macro en la parte de Modulo 1 trato de poner nuevamente Private Sub y al tratar de poner el numero 1 me arroja un error de compulacion no permite poner el numero 1, por q pasa eso? Serias tan gentil en apoyarme para verificar mi duda? esta es la programacion (pongo en rojo donde debe de ir el 1 y donde me manda el error,

HOJA 1
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strToCall As String
strToCall = Range("C1").Value
On Error Resume Next
If Target.Address = "$C$1" Then Application.Run strToCall
On Error GoTo 0
End Sub
-------------------
MODULO 1
Option Explicit
Private Sub 1 ()  "AQUI ES DONDE MANDA EL ERROR AL PONER EL NUMERO 1 Q ESTA EN MI COMBO"

MsgBox "Pasar a la pregunta 9"
End Sub
Private Sub ()
MsgBox "Pasar a la pregunta 12"
End Sub
Private Sub ()
MsgBox "Pasar a la pregunta 21"
End Sub

Espero haberme explicado de manera adecuada, cualquier cosa estoy a tus ordenes.

Ahí el detalle esta en que no puedes poner solo el número como identificador de la macro. Puedes poner solo una letra pero no un número. Te sugiero reemplazar el if que te manda a las demás macros por un select case que haga la función de las otras macros.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas