En este grupo En todos

Foro de Excel



Funciones de excel en variables

Bonaventura
Barcelona, España
Escrito por Bonaventura Bonaventura Valls
el 21/04/2008

Hola,

Este macro tiene como fallo la línea dinde hay la función UPPERS. Sun embargo hay otras líneas con funciones com TRIM y MID que no fallan.

Private Sub CommandButton1_Click()
[comptesel] = ListBox2
a = Workbooks("ent"). Sheets("pgc"). Range("a1"). Offset(30000). End(xlUp). Row

With Workbooks("ent"). Sheets("pgc"). Range("a1")
       . Offset(a, 0) = ListBox2
       . Offset(a, 1) = UPPER(TextBox1)
       . Offset(a, 2) = Trim(Mid(ListBox3, 1, 3))
       . Offset(a, 3) = [comptenou]. Offset(10)
       . Offset(a, 4) = [comptenou]. Offset(10, -1)
       . CurrentRegion. Sort Key1:=Workbooks("ent"). Sheets("pgc"). Range("A2"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End With
Unload ALTAPGC
End Sub

Para solucionarlo recurro celdas de Excel, que uso como variables. Igual me ocurre con la función VLOOKUP. No comprendo porque funciones como LEN, MID, TRIM y otras funcionan sin más y otras no.    Al principio creí que sólo pasaba esto con las funciones con más de una referencia. UPPER sólo tiene una referencia.

¿Hay  alguna razón lógica que permita saber cuáles SI y cuáles NO? No me parece de recibo que memorizarlas.

Saludos.



Armando Montes
Foro excel emagister
Escrito por Armando Montes
el 21/04/2008
Prueba cambiando UPPER por Ucase, suerte
Abraham Valencia
Computacion e informatica microsoft mv...
Escrito por Abraham Valencia
el 21/04/2008
Estimado amigo, estas entrando en una confusion a la que muchos usarios de excel y VBA de excel entran.

En excel tenemos diversas funciones como MAYUSC, BUSCARV, MINUSC, etc, las cuales, obviamente son funciones de excel. Si uno con la grabadora de macros, inserta fucniones, el codigo generado tendra la funcion de excel en ingles, ejemplo con MAYUSC y MINUSC:

  ActiveCell. FormulaR1C1 = "=LOWER(RC[-1])"

    ActiveCell. FormulaR1C1 = "=UPPER(RC[-1])"

Entonces, lo que hemos hech aqui es INSERTAR FUNCIONES DE EXCEL MEDIANTE VBA. Que no es lo mismo que tener funciones de excel equivalentes en VBA.

No necesariamente las fuciones de excel tienen una representacion en VBA, tu podrias mencionar los  casos de MID, LEFT, y otras, pero te dire, que es, digamos, universal, pues son parte integra del lenguaje VBA y VB.

Si tu lo que deseeas es, necesariamente usar funciones de excel que tengan equivalentes en VBA, pues, te recomiendo leer sobre las WorkSheetFunction, que sin son, (casi) verdaderamente equivalentes entre las fucniones de excel, y dichas instrucciones de VBA

Abraham
Escrito por Bonaventura Bonaventura Valls
el 21/04/2008

Si lo entiendo bien las funciones de VBA pueden coincidir en muchos casos con las de Excel, pero no son las mismas. Por consiguiente hay que aprender las de VBA y dejar las de Excel sólo para los casos en que haya que recurrir a FORMULAR!C! Con destino a celdas de E$xcel.   Para moverse entre variable hay que utilizar las de VBA.

Ya intuía algo de eso, porque me extrañaba que en muchos casos al colocar el contenido de una variable en una celda, aunque no se especificara el FORMULAR!C! , colocaba en la celda una fórmula y no un valor.

Ucase funciona bien. Espero encontrar las funciones de VBA en la ayuda.

Saludos. Y gracias por la paciencia.


 

Abraham Valencia
Computacion e informatica microsoft mv...
Escrito por Abraham Valencia
el 21/04/2008
De nada mi estimado, cierro el tema.

Abraham