Excel visual basic funciones

Hoa experto. Te molesto por el siguiente tema: estoy aprendiendo visual basic para aplicar en excel y estoy con el asunto de la funciones en visual basic. Envío el código de la función y mi pregunta es la siguiente:
Como hago para introducir los parametros en un msgbox? Como veras el código tal como esta funciona, pero lo que quisiera lograr es introducir los parámetros Buscar_Valor y Casilla_Inicial a través de un msg box
Sub Ejemplo_36P()
Dim Casilla As String
Range("c3").Value = ""
Casilla = Buscar_Valor("a2", 124)
If Range("c3").Value = "" Then
MsgBox "Valor Buscado No Encontrado"
Range("a2").Select
End If
End Sub
Function Buscar_Valor(Casilla_Inicial As String, Valor_Buscado As Integer) As String
ActiveSheet.Range(Casilla_Inicial).Activate
'Mientras celda no vacía y valor de celda sea diferente al buscado
Do While Not IsEmpty(ActiveCell) And ActiveCell.Value <> Valor_Buscado
ActiveCell.Offset(1, 0).Activate
Loop
'Si la casilla donde se detuvo no está vacía encontró el valor.
If Not IsEmpty(ActiveCell) Then
'Devolver la casilla donde se ha encontrado el valor
Buscar = ActiveCell.Address
Range("c3").Value = Buscar
Else ' La casilla está vacía, NO se ha encontrado el valor buscado
Buscar = "" ' Devolver una cadena vacía
End If
End Function
'Función Buscar_Valor de Tipo String > Recorre las filas de una columna
'hasta encontrar el valor buscado. Si no encuentra se posiciona en una
'celda vacía. Parámetros : Valor_Buscado y Casilla_Inicial.
'Valor_Buscado : Valor que se debe encontrar
'Casilla_Inicial : Celda donde debe empezar a buscar.
'Devuelve un string que contiene la referencia de la casilla donde se ha encontrado
'el valor. 'También puede devolver "" en caso que el valor buscado no esté.
Si me lo puedes responder desde ya gracias por tu amabilidad.

1 Respuesta

Respuesta
1
No puedes pasar valores a una función desde un msgbox por la sencilla razón de que el msgbox es sólo para mostrar, lo que necesitas es un InputBox que almacene el valor.
Para ello tienes que asociar dos variables a los valores a pasar, ya que son ellas las que realmente almacenan el valor.
Dim celda as string
Dim valor as integer
celda=Inputbox("teclea celda")
valor=Inputbox("teclea valor")
Una vez capturados los valores se los puedes pasar a la función:
Casilla = Buscar_Valor(celda, valor)
Aclaro que cuando dije msgbox en realidad quise decir InputBox así que no estoy tan perdido. Gracias por tu respuesta que fue muy clara y precisa y contesta exactamente mi pregunta, solo que no logro comprender por que se define celda como una variable string y no como una variable de rango si hace referencia a la celda inicial en la que quiero empezar la búsqueda.
Porque la función Buscar_valor necesita "el nombre" de una celda para operar, ya sea "A2" o "fulanita" y son tipo texto´, además el primer argumento "Casilla_Inicial" lo has definido como string.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas