Access & VBA FAQ
| | | |
Indice de temas
Tablas
Consultas
Formularios
Informes
Macros
Módulos
Base de datos
Miscelánea
API
Utilidades
Problemas
Cadenas
Fechas
Todos los temas
Cadenas : Replace Access 97
Autor/es:
Juan M Afán de Ribera
Aquí tenemos una función Replace para los sufridos usuarios de Access 97.

Según la ayuda de VBA para Access, la función Replace:

Devuelve una cadena en la que se reemplazó una subcadena especificada con otra subcadena un número especificado de veces.

Sintaxis

Replace(Expression, Find, sReplace, [Start], [Count], [Compare])

La sintaxis de la función Replace consta de los siguientes

Argumentos

ArgumentoDescripción
ExpressionRequerido. Una expresión de cadena que contiene la subcadena que reemplazar
FindRequerido. La subcadena que se busca
sReplaceRequerido. La subcadena de sustitución
StartOpcional. La posición dentro de la expresión donde se empezará a buscar la subcadena. Si se omite, se supone que es 1
CountOpcional. El número de sustituciones de subcadenas que se realizarán. Si se omite, el valor predeterminado es –1, que significa que se hagan todas las sustituciones posibles
CompareOpcional. El valor númerico que indica la clase de comparación que se realizará cuando se evalúen las subcadenas. Vea la sección Valores para consultar los valores posibles

Valores

ConstanteValorDescripción
vbUseCompareOption-1Realizar una comparación utilizando el valor de la instrucción Option Compare
vbBinaryCompare0Realiza una comparación binaria
vbTextCompare1Realizar una comparación basada en el texto
vbDatabaseCompare2Sólo para Microsoft Access. Realizar una comparación basada en la información de su base de datos

Valores de retorno

SiReplace devuelve
Expression es de longitud ceroUna cadena de longitud cero ("")
Expression es NullUn error
Find es de longitud ceroUna copia de Expression
sReplace es de longitud ceroUna copia de Expression con todas las apariciones de encontrar quitadas
Start > Len(Expression)Una cadena de longitud cero
Count es 0Una copia de Expression
El valor de retorno de la función Replace es una cadena con sustituciones hechas que comienza en la posición especificada por Start y concluye al final de la cadena Expression. No es una copia de la cadena original desde el inicio al final
Ejemplo de uso: el siguiente código reemplazaría todas las ocurrencias "VB" por "Visual Basic" en la variable "CadenaTmp"
Dim CadenaTmp As String

    CadenaTmp = "Documentación de VB." & vbCrLf & vbCrLf _
    & "VB incluye varias herramientas de documentación, " _
    & "cada una designada para ayudarle a aprender y usar " _
    & "un aspecto particular del producto. La documentación " _
    & "proporcionada con VB incluye lo siguiente... etc, etc ..."
    
    CadenaTmp = Replace(CadenaTmp, "VB", "Visual Basic")
    
    MsgBox CadenaTmp
'---------------------------------------------------------
' Replace
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     accessvba@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Function Replace( _
                Expression As String, _
                Find As String, _
                sReplace As String, _
                Optional Start As Long = 1, _
                Optional Count As Long = -1, _
                Optional Compare As Long) As String
      
Dim pos As Long
Dim strTmp As String
Dim LenFind As Long
Dim LenReplace As Long
Dim cnt As Long
 
    ' si Expression es de longitud cero
    ' se devuelve una cadena de longitud cero ("")
    If Len(Expression) = 0 Then Exit Function
    ' si Start es mayor que la longitud de Expression
    ' se devuelve una cadena de longitud cero ("")
    If Start > Len(Expression) Then Exit Function
        
    ' si Find es de longitud cero
    ' se devuelve una copia de Expression
    If Len(Find) = 0 Then
        Replace = Expression
        Exit Function
    End If
    
    ' aseguramos que los valores para Compare y Start sean
    ' correctos, si no es así, asignamos los valores por defecto
    If Start < 1 Or Start > Len(Expression) Then Start = 1
    If Compare < 0 Or Compare > 2 Then Compare = 0
    
    strTmp = Expression
    LenFind = Len(Find)
    LenReplace = Len(sReplace)
    pos = InStr(Start, strTmp, Find, Compare)
    
    Do While pos > 0 And cnt <> Count
        strTmp = Left$(strTmp, pos - 1) & sReplace & Mid$(strTmp, pos + LenFind)
        pos = InStr(pos + LenReplace, strTmp, Find, Compare)
        cnt = cnt + 1
    Loop
    
    Replace = strTmp
    
End Function
'---------------------------------------------------------

Ejemplos:

 

Temas relacionados:

Split para Access 97

StrReverse Access 97

InStrRev Access 97

MonthName Access 97

WeekDayName Access 97

Join Access 97

Filter Access 97

 

Última actualización: 9/2/2005