Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-02-2006
valera valera is offline
Miembro
 
Registrado: Apr 2005
Posts: 39
Poder: 0
valera Va por buen camino
Macros en Excel

Holas muchachos del foro, estaba sin hacer y se me ocurrio buscar en internet si habia algo sobre conversion de letras en excel y si encontré codigo pero el problema es el siguiente: por ejemplo si en la celda A1 tengo texto en minuscula y en A2 tengo texto en mayuscula, lo que quiero es que con un solo macro me convierta lo que está en minuscula a mayuscula y viceversa, El codigo que encontré lo hace por separado un macro para mayuscula y otro macro para minuscula y lo que quiero es unirlo para que con un solo macro haga las dos conversiones a la vez. les envio el codigo ya unido para que quien me pueda ayudar.

Por su ayuda muchas gracias.
Código:
Sub Convertir()
'Convierte de minuscula a mayuscula
' Creado el 27/11/2003 por David García
Dim NFil(128), NCol(128), CFil(128), Ccol(128), Nra, Nia, Nja, ra, ia, ja As Integer
Dim letras As String
AreaCount = Selection.Areas.Count
If AreaCount < 128 Then
    ia = 1
    For Each A In Selection.Areas
        NFil(ia) = A.Row
        NCol(ia) = A.Column
        CFil(ia) = A.Rows.Count
        Ccol(ia) = A.Columns.Count
        ia = ia + 1
    Next A
    Nra = ia - 1
    ra = 1
    ia = 1
    ja = 1
    Do While ra <= Nra
        Nia = CFil(ra)
        ia = NFil(ra)
        Nja = Ccol(ra)
        ja = NCol(ra)
        Do While ia < NFil(ra) + CFil(ra)
            Do While ja < NCol(ra) + Ccol(ra)
                letras = UCase(Cells(ia, ja).Value)
                Cells(ia, ja) = letras
                ja = ja + 1
            Loop
            ja = NCol(ra)
            ia = ia + 1
        Loop
        ra = ra + 1
    Loop
Else
    MsgBox "No aplica a más de 128 áreas, y usted seleccionó " & AreaCount & ".", vbDefaultButton1, "David le recuerda:"
End If
'Convierte de Mayuscula a minuscula
'Creado el 27/11/2003 por David García
Dim NFi(128), NCo(128), CFi(128), Cco(128), Nr, Ni, Nj, r, i, j As Integer
Dim Texto As String
AreaCount = Selection.Areas.Count
If AreaCount < 128 Then
    i = 1
    For Each B In Selection.Areas
        NFi(i) = B.Row
        NCo(i) = B.Column
        CFi(i) = B.Rows.Count
        Cco(i) = B.Columns.Count
        i = i + 1
    Next B
    Nr = i - 1
    r = 1
    i = 1
    j = 1
    Do While r <= Nr
        Ni = CFi(r)
        i = NFi(r)
        Nj = Cco(r)
        j = NCo(r)
        Do While i < NFi(r) + CFi(r)
            Do While j < NCo(r) + Cco(r)
                Texto = LCase(Cells(i, j).Value)
                Cells(i, j) = Texto
                j = j + 1
            Loop
            j = NCo(r)
            i = i + 1
        Loop
        r = r + 1
    Loop
Else
    MsgBox "No aplica a más de 128 áreas, y usted seleccionó " & AreaCount & ".", vbDefaultButton1, "David le recuerda:"
End If
End Sub
Responder Con Cita
  #2  
Antiguo 12-02-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: May 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
A ver si esto lo que quieres:
Código:
Sub MayuscMinusc()
'
' MayuscMinusc Macro
' Macro grabada el 12/02/2006 por Marcos

Dim NFil(128), NCol(128), CFil(128), Ccol(128), Nra, Nia, Nja, ra, ia, ja As Integer
Dim letras As String
AreaCount = Selection.Areas.Count
If AreaCount < 128 Then
    ia = 1
    For Each A In Selection.Areas
        NFil(ia) = A.Row
        NCol(ia) = A.Column
        CFil(ia) = A.Rows.Count
        Ccol(ia) = A.Columns.Count
        ia = ia + 1
    Next A
    Nra = ia - 1
    ra = 1
    ia = 1
    ja = 1
    Do While ra <= Nra
        Nia = CFil(ra)
        ia = NFil(ra)
        Nja = Ccol(ra)
        ja = NCol(ra)
        Do While ia < NFil(ra) + CFil(ra)
            Do While ja < NCol(ra) + Ccol(ra)
            
                If Asc(Cells(ia, ja).Value) > 96 Then
                letras = UCase(Cells(ia, ja).Value)
                Cells(ia, ja) = letras
                ja = ja + 1
                Else
                letras = LCase(Cells(ia, ja).Value)
                Cells(ia, ja) = letras
                ja = ja + 1
                
                End If
                
                
            Loop
            ja = NCol(ra)
            ia = ia + 1
        Loop
        ra = ra + 1
    Loop
    
Else
    MsgBox "No aplica a más de 128 áreas, y usted seleccionó " & AreaCount & ".", vbDefaultButton1, "David le recuerda:"
End If

End Sub
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 12-02-2006
valera valera is offline
Miembro
 
Registrado: Apr 2005
Posts: 39
Poder: 0
valera Va por buen camino
Hola Marcos

El codigo que me enviaste marca este error cuando ejecuto el macro: Se ha producido el error '5' en tiempo de ejecucion Argumento o llamada a procedimiento no valida y es en esta linea de codigo es donde lo marca:
Código:
If Asc(Cells(ia, ja).Value) > 96 Then
Por tu ayuda muchas gracias y saludo que estes bien
Responder Con Cita
  #4  
Antiguo 12-02-2006
valera valera is offline
Miembro
 
Registrado: Apr 2005
Posts: 39
Poder: 0
valera Va por buen camino
Disculpa Marcos

Ya encontré porqué me mandaba el error: lo que pasa es que escribia el texto en diferente celdas y lo seleccionaba con otras celdas vacias.
Otro favor como comparo las celdas vacias para que cuando ejecute el macro si encuentra celdas vacias que no lo tome en cuenta sino que haga la conversion a todas aquellas celdas que contengan texto.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Defecto grave de Excel al estar celda en estado de edición Al González Servers 4 25-06-2016 01:09:59
Llevar desde Excel a una BD paradox DarkSide Servers 39 08-09-2011 14:58:23
Esperar hasta que se cierre Excel Er_Manué Varios 2 28-10-2005 04:08:18
Manipulacion de macros en excel desde delphi vick Conexión con bases de datos 2 27-10-2005 23:11:31
generación de planilla excel super rapido acertij022 Servers 5 13-02-2004 15:27:31


La franja horaria es GMT +2. Ahora son las 19:56:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi