es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Transferir macro a UDF

Quiero que la macro que aparece a continuación se transfiera a una Función Definida por el Usuario (UDF), pero no sé cómo.

Quiero una UDF en la que selecciono el texto a buscar y lo devuelvo en la celda donde se coloque la UDF.

¿Alguien puede ayudarme?

Sub Find_pipe()
    Dim Findstring As String
    Dim Location As String
    Dim Rng As Range
End Sub

Sub Find_First()
Dim Findstring As String
Dim Rng As Range
Findstring = InputBox("vul naam van leiding in")

If Trim(Findstring) <> "" Then
    With Sheets("scenario 1V2").Range("A1:BP150")
        Set Rng = .Find(What:=Findstring, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        If Not Rng Is Nothing Then
            Application.Goto Rng.Offset(1), True
            Application.Goto ThisWorkbook.Worksheets("D en L berekening").Range("A1"), True
            ThisWorkbook.Worksheets("D en L berekening").Range("U10").Value = Rng.Offset(1).Value
        Else
            MsgBox "Nothing found"
        End If
    End With
End If

End Sub
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para transferir la macro a una UDF, puedes usar el siguiente código:

    Function Encontrar_tuberia_udf(BuscarString As String) As Variant
    
        Dim Rng As Range
    
        If Trim(BuscarString) <> "" Then
            With Hojas("scenario 1V2").Rango("A1:BP150")
                Set Rng = .Buscar(What:=BuscarString, _
                                After:=.Celdas(.Celdas.Contar), _
                                LookIn:=xlValues, _
                                LookAt:=xlWhole, _
                                SearchOrder:=xlPorFilas, _
                                SearchDirection:=xlSiguiente, _
                                MatchCase:=False)
                If Not Rng Is Nothing Then
                    Encontrar_tuberia_udf = Rng.Offset(1).Value
                Else
                    Encontrar_tuberia_udf = "Nada encontrado"
                End If
            End With
        End If
    
    End Function
    

    Esta UDF toma como argumento una cadena de texto llamada BuscarString y devuelve el valor en la celda directamente debajo del rango encontrado. También devuelve la cadena de texto “Nada encontrado” si no se encuentra el valor.

    Para usar esta UDF, inserta la siguiente fórmula en la celda donde deseas que se devuelva el valor:

    =Encontrar_tuberia_udf("cadena_a_buscar")

    Reemplaza "cadena_a_buscar" con la cadena de texto real que deseas buscar. Cuando presiones enter, la UDF se ejecutará y devolverá el valor correspondiente.

Comments are closed.