Cómo refrescar por código

20/05/2004 - 08:56 por Cheeky | Informe spam
Hola Grupo:
Tengo este código

Private Sub CommandButton3_Click()
Dim cel As Range, rangoT As Range, direcc As String
Set rangoT = Selection
For Each cel In rangoT
direcc = cel.Address
Range("A65000").formula = "=NOMPROPIO(" & direcc & ")"
cel.Value = Range("A65000").Value
Next cel
End Sub


que evidentemente no funciona porque la fórmula que introduzco en A65000 no
se "ejecuta", ¿cómo podría hacerse?.

Saludos for everybody.

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
20/05/2004 - 09:52 | Informe spam
Si usas .formula tendrás que poner el nombre de la función en inglés, es decir:

Range("A65000").formula = "=PROPER(" & direcc & ")"

De todas formas, no termino de entender qué es lo que quieres hacer. Si se trata de aplicar a la selección actual la función NOMPROPIO usando VBA, podrías hacerlo directamente usando el objeto WorksheetFunction. Si es esto lo que necesitas, dínoslo, y pienso que podremos escribirte el código.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Cheeky" escribió en el mensaje news:
Hola Grupo:
Tengo este código

Private Sub CommandButton3_Click()
Dim cel As Range, rangoT As Range, direcc As String
Set rangoT = Selection
For Each cel In rangoT
direcc = cel.Address
Range("A65000").formula = "=NOMPROPIO(" & direcc & ")"
cel.Value = Range("A65000").Value
Next cel
End Sub


que evidentemente no funciona porque la fórmula que introduzco en A65000 no
se "ejecuta", ¿cómo podría hacerse?.

Saludos for everybody.


Respuesta Responder a este mensaje
#2 Cheeky
20/05/2004 - 11:00 | Informe spam
Gracias, tocayo, conocía la "traducción" al ingles de la función, pero no
sabía que en código los textos de fórmula había que ponerlos en ingles, eso
es lo que me despistó, que aunque va entre comillas, en realidad es código
VB.
Gracias, le podría haber dado vueltas y ayuda no lo habría encontrado.
Respecto a tu comentario "que es lo que trato de hacer", pues que intentando
hacer tres botones de comando para dar formato texto de MAYUSC, MINUSC, y
NOMPROPIO a los rangos seleccionados, pues sé la correspondencia entre
MAYUSC y UCase, MINUSC y LCase, pero que yo sepa no hay traducción a VB de
NOMPROPIO, por eso lo de crear esa rutina "mala" pero que con tu ayuda
funciona y es "tolerable" para rangos pequeños.

De momento lo tengo así:

Dim cel As Range, direcc As String
For Each cel In Selection
direcc = cel.Address
Range("A65000").formula = "=PROPER(" & direcc & ")"
cel.Value = Range("A65000").Value
Next cel
Le añadiré un If para comprobar por cada cel es una constante, para que no
cambie fórmulas por su valor, y de momento no lo sé hacer de otra manera.

"Fernando Arroyo" escribió en el mensaje
news:Oj$
Si usas .formula tendrás que poner el nombre de la función en inglés, es
decir:

Range("A65000").formula = "=PROPER(" & direcc & ")"

De todas formas, no termino de entender qué es lo que quieres hacer. Si se
trata de aplicar a la selección actual la función NOMPROPIO usando VBA,
podrías hacerlo directamente usando el objeto WorksheetFunction. Si es esto
lo que necesitas, dínoslo, y pienso que podremos escribirte el código.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Cheeky" escribió en el mensaje
news:
Hola Grupo:
Tengo este código

Private Sub CommandButton3_Click()
Dim cel As Range, rangoT As Range, direcc As String
Set rangoT = Selection
For Each cel In rangoT
direcc = cel.Address
Range("A65000").formula = "=NOMPROPIO(" & direcc & ")"
cel.Value = Range("A65000").Value
Next cel
End Sub


que evidentemente no funciona porque la fórmula que introduzco en A65000


no
se "ejecuta", ¿cómo podría hacerse?.

Saludos for everybody.


Respuesta Responder a este mensaje
#3 Juan Carlos Pérez
23/05/2004 - 14:07 | Informe spam
Para poner por código los distintos tipos de letra, incluso la de nombre
propio se puede usar la siguiente función:

strconv(texto, x)

siendo "texto" el texto que quieres convertir, y "x" una constante que pueda
tomar los siguientes valores:
1 = MAYUSCULAS
2 = MINUSCULAS
3 = NOMBRE PROPIO
No obstante, si tienes activada en en el editor de VBA la ayuda mientras se
escribe, al introducir la función ya te indica las constantes (en letra).
Seguidamente te reproduzco unas macros que cambian el valor de las celdas
seleccionadas en una hoja a cualquiera de los tipos mencionados:

Sub Cambiar_Rango_a_Nombre_Propio()
Dim Rango As Range, Celda As Range

Set Rango = Selection

For Each Celda In Rango
'Se puede utilizar cualquiera de las dos
'Celda = StrConv(Celda, vbProperCase)
Celda = StrConv(Celda, 3)
Next

End Sub

Sub Cambiar_Rango_a_Mayusculas()
Dim Rango As Range, Celda As Range

Set Rango = Selection

For Each Celda In Rango
'Se puede utilizar cualquiera de las dos
'Celda = StrConv(Celda, vbUpperCase)
Celda = StrConv(Celda, 1)
Next

End Sub

Sub Cambiar_Rango_a_Minusculas()
Dim Rango As Range, Celda As Range

Set Rango = Selection

For Each Celda In Rango
'Se puede utilizar cualquiera de las dos
'Celda = StrConv(Celda, vbLowerCase)
Celda = StrConv(Celda, 2)
Next

End Sub


Esperando haberte ayudado, te saluda cordialmente

Juan Carlos Perez
Asturias-España







"Cheeky" escribió en el mensaje
news:#
Gracias, tocayo, conocía la "traducción" al ingles de la función, pero no
sabía que en código los textos de fórmula había que ponerlos en ingles,


eso
es lo que me despistó, que aunque va entre comillas, en realidad es código
VB.
Gracias, le podría haber dado vueltas y ayuda no lo habría encontrado.
Respecto a tu comentario "que es lo que trato de hacer", pues que


intentando
hacer tres botones de comando para dar formato texto de MAYUSC, MINUSC, y
NOMPROPIO a los rangos seleccionados, pues sé la correspondencia entre
MAYUSC y UCase, MINUSC y LCase, pero que yo sepa no hay traducción a VB de
NOMPROPIO, por eso lo de crear esa rutina "mala" pero que con tu ayuda
funciona y es "tolerable" para rangos pequeños.

De momento lo tengo así:

Dim cel As Range, direcc As String
For Each cel In Selection
direcc = cel.Address
Range("A65000").formula = "=PROPER(" & direcc & ")"
cel.Value = Range("A65000").Value
Next cel
Le añadiré un If para comprobar por cada cel es una constante, para que no
cambie fórmulas por su valor, y de momento no lo sé hacer de otra manera.

"Fernando Arroyo" escribió en el mensaje
news:Oj$
Si usas .formula tendrás que poner el nombre de la función en inglés, es
decir:

Range("A65000").formula = "=PROPER(" & direcc & ")"

De todas formas, no termino de entender qué es lo que quieres hacer. Si se
trata de aplicar a la selección actual la función NOMPROPIO usando VBA,
podrías hacerlo directamente usando el objeto WorksheetFunction. Si es


esto
lo que necesitas, dínoslo, y pienso que podremos escribirte el código.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Cheeky" escribió en el mensaje
news:
> Hola Grupo:
> Tengo este código
>
> Private Sub CommandButton3_Click()
> Dim cel As Range, rangoT As Range, direcc As String
> Set rangoT = Selection
> For Each cel In rangoT
> direcc = cel.Address
> Range("A65000").formula = "=NOMPROPIO(" & direcc & ")"
> cel.Value = Range("A65000").Value
> Next cel
> End Sub
>
>
> que evidentemente no funciona porque la fórmula que introduzco en A65000
no
> se "ejecuta", ¿cómo podría hacerse?.
>
> Saludos for everybody.
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida