Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Convertir Mayusculas a minusculas o primeras mayusculas

9 views
Skip to first unread message

Paul P. Garcia

unread,
Jul 31, 2009, 10:28:23 AM7/31/09
to
Saludos.

Tengo los siguientes 2 codigos, para convertir las primeras letras a
mayusculas.
El primero convierte la celda activa a "Primeras letras a mayusculas"
El segundo codigo hace el mismo trabajo pero indicando un rango de celda.

dato = ActiveCell.Value
If VarType(dato) = 8 Then
ActiveCell.Value = WorksheetFunction.Proper(dato)
End If
ActiveCell.Offset(1, 0).Select
*/*/*/*/*/
Dim i As Integer
Dim j As Integer
For i = 0 To 50 ' Numero de Columnas
For j = 0 To 200 ' Numero de Filas
dato = ActiveCell.Value
If VarType(dato) = 8 Then
ActiveCell.Value = WorksheetFunction.Proper(dato)
End If
ActiveCell.Offset(1, 0).Select
Next
ActiveCell.Offset(-201, 0).Select ' Numero de Filas + 1
ActiveCell.Offset(0, 1).Select
Next

Ahora me gustaria saber si se puede hacer lo mismo pero que este codigo
actue solo en un rango de celdas seleccionadas. Es decir si tengo
seleccionado A1:A200 entonces que el codigo actue sobre esta seleccion.

Gracias de antemano.


David

unread,
Jul 31, 2009, 11:03:02 AM7/31/09
to
En lugar de utilizar un FOR para las filas y otro para las columnas, podrías
dimensionar una variable tipo Range:

Dim xCelda As Range

y luego utilizar un FOR EACH para recorrer todas las celdas de el rango
seleccionado:

For Each xCelda In Selection

Ten en cuenta que esto podría fallarte si lo que tienes seleccionado no es
un rango de celdas sino, por ejemplo, un grupo de autofromas. Para evitar
mensajes de error en situaciones así, podrías agregar un control de errores
(ON ERROR GOTO...)

Saludos...

- - - - - -


"Paul P. Garcia" escribió:

Paul P. Garcia

unread,
Jul 31, 2009, 11:15:16 AM7/31/09
to
Hola David.

Soy nuevo en esto de codigos no le entiendo, pero mira que encontre esto y
me esta funcionando bien.

Dim rango As Range
Dim cell As Range
Set rango = Selection
For Each cell In rango
cell.Value = WorksheetFunction.Proper(cell.Value) ' a min�sculas
Next

Ahora me gustaria saber como mejorarlo o anticiparme ante cualquier error
que se presente.

"David" <sdgm04Q...@hotmail.com> escribi� en el mensaje
news:A0A9AB84-E679-424C...@microsoft.com...


> En lugar de utilizar un FOR para las filas y otro para las columnas,

> podr�as


> dimensionar una variable tipo Range:
>
> Dim xCelda As Range
>
> y luego utilizar un FOR EACH para recorrer todas las celdas de el rango
> seleccionado:
>
> For Each xCelda In Selection
>

> Ten en cuenta que esto podr�a fallarte si lo que tienes seleccionado no es


> un rango de celdas sino, por ejemplo, un grupo de autofromas. Para evitar

> mensajes de error en situaciones as�, podr�as agregar un control de

> errores
> (ON ERROR GOTO...)
>
> Saludos...
>
> - - - - - -
>
>

> "Paul P. Garcia" escribi�:

David

unread,
Jul 31, 2009, 11:30:01 AM7/31/09
to
Disculpa. Por el código que posteaste pensé que ya tenías una regular
experiencia en VBA...

Básicamente, el código que comentas es lo que te sugería. Ahora, para mayor
seguridad, prueba con el siguiente:

Sub ConvertrNomPropio()
Dim xCell As Range
ON ERROR GOTO MALO
For Each xCell In Selection.Cells
xCell.Value = WorksheetFunction.Proper(xCell.Value)
Next
MALO:
ON ERROR GOTO 0
End Sub

Las líneas que agrego en mayúscula, son las que interceptan el error, y lo
redireccionan a la etiqueta MALO:. En el ejemplo, si ocurre un error,
simplemente no se hace nada. Podrías generar un mensaje de error, pero eso
es precisamente lo que se intenta evitar.


- - - - - -


"Paul P. Garcia" escribió:

> Hola David.
>
> Soy nuevo en esto de codigos no le entiendo, pero mira que encontre esto y
> me esta funcionando bien.
>
> Dim rango As Range
> Dim cell As Range
> Set rango = Selection
> For Each cell In rango

> cell.Value = WorksheetFunction.Proper(cell.Value) ' a minúsculas


> Next
>
> Ahora me gustaria saber como mejorarlo o anticiparme ante cualquier error
> que se presente.
>

> "David" <sdgm04Q...@hotmail.com> escribió en el mensaje

> news:A0A9AB84-E679-424C...@microsoft.com...
> > En lugar de utilizar un FOR para las filas y otro para las columnas,

> > podrías


> > dimensionar una variable tipo Range:
> >
> > Dim xCelda As Range
> >
> > y luego utilizar un FOR EACH para recorrer todas las celdas de el rango
> > seleccionado:
> >
> > For Each xCelda In Selection
> >

> > Ten en cuenta que esto podría fallarte si lo que tienes seleccionado no es


> > un rango de celdas sino, por ejemplo, un grupo de autofromas. Para evitar

> > mensajes de error en situaciones así, podrías agregar un control de

> > errores
> > (ON ERROR GOTO...)
> >
> > Saludos...
> >
> > - - - - - -
> >
> >

> > "Paul P. Garcia" escribió:

Paul P. Garcia

unread,
Jul 31, 2009, 11:43:19 AM7/31/09
to
Hola David.

Ahora me gustaria hacer algo un poco mas avanzado, espero se pueda hacer.
Quisiera que al presionar CTRL+M aparezca una venta con 3 opciones igual a
la ventana de Word Cambiar Mayusculas minusculas
Si esto fuera posible, claro esta.
Poder elegir en cambiar todo mayusculas o todo minusculas.

"David" <sdgm04Q...@hotmail.com> escribi� en el mensaje

news:C29802EE-179C-40EB...@microsoft.com...
> Disculpa. Por el c�digo que posteaste pens� que ya ten�as una regular
> experiencia en VBA...
>
> B�sicamente, el c�digo que comentas es lo que te suger�a. Ahora, para

> mayor
> seguridad, prueba con el siguiente:
>
> Sub ConvertrNomPropio()
> Dim xCell As Range
> ON ERROR GOTO MALO
> For Each xCell In Selection.Cells
> xCell.Value = WorksheetFunction.Proper(xCell.Value)
> Next
> MALO:
> ON ERROR GOTO 0
> End Sub
>

> Las l�neas que agrego en may�scula, son las que interceptan el error, y lo


> redireccionan a la etiqueta MALO:. En el ejemplo, si ocurre un error,

> simplemente no se hace nada. Podr�as generar un mensaje de error, pero

> eso
> es precisamente lo que se intenta evitar.
>
>
> - - - - - -
>
>

> "Paul P. Garcia" escribi�:


>
>> Hola David.
>>
>> Soy nuevo en esto de codigos no le entiendo, pero mira que encontre esto
>> y
>> me esta funcionando bien.
>>
>> Dim rango As Range
>> Dim cell As Range
>> Set rango = Selection
>> For Each cell In rango

>> cell.Value = WorksheetFunction.Proper(cell.Value) ' a min�sculas


>> Next
>>
>> Ahora me gustaria saber como mejorarlo o anticiparme ante cualquier error
>> que se presente.
>>

>> "David" <sdgm04Q...@hotmail.com> escribi� en el mensaje


>> news:A0A9AB84-E679-424C...@microsoft.com...
>> > En lugar de utilizar un FOR para las filas y otro para las columnas,

>> > podr�as


>> > dimensionar una variable tipo Range:
>> >
>> > Dim xCelda As Range
>> >
>> > y luego utilizar un FOR EACH para recorrer todas las celdas de el rango
>> > seleccionado:
>> >
>> > For Each xCelda In Selection
>> >

>> > Ten en cuenta que esto podr�a fallarte si lo que tienes seleccionado no

>> > es
>> > un rango de celdas sino, por ejemplo, un grupo de autofromas. Para
>> > evitar

>> > mensajes de error en situaciones as�, podr�as agregar un control de


>> > errores
>> > (ON ERROR GOTO...)
>> >
>> > Saludos...
>> >
>> > - - - - - -
>> >
>> >

>> > "Paul P. Garcia" escribi�:

David

unread,
Jul 31, 2009, 12:27:01 PM7/31/09
to
Pues... sí es bastante lo que pides, pero lo bueno es que como dijera
alguien, "en Excel, todo es posible". Yo personalmente creo que exageró un
poco, pero al menos lo que quieres sí es posible. Creo que tengo un ejemplo
por allí que hace lo que quieres. Eso sí: tendrás que instalarlo en alguno
de tus libros...

Sólo una consulta, antes de darte una mano con esto: ¿Qué versión de Office
tienes, y en qué lenguaje?

- - - - - -


"Paul P. Garcia" escribió:

> Hola David.
>
> Ahora me gustaria hacer algo un poco mas avanzado, espero se pueda hacer.
> Quisiera que al presionar CTRL+M aparezca una venta con 3 opciones igual a
> la ventana de Word Cambiar Mayusculas minusculas
> Si esto fuera posible, claro esta.
> Poder elegir en cambiar todo mayusculas o todo minusculas.
>

> "David" <sdgm04Q...@hotmail.com> escribió en el mensaje
> news:C29802EE-179C-40EB...@microsoft.com...
> > Disculpa. Por el código que posteaste pensé que ya tenías una regular
> > experiencia en VBA...
> >
> > Básicamente, el código que comentas es lo que te sugería. Ahora, para

> > mayor
> > seguridad, prueba con el siguiente:
> >
> > Sub ConvertrNomPropio()
> > Dim xCell As Range
> > ON ERROR GOTO MALO
> > For Each xCell In Selection.Cells
> > xCell.Value = WorksheetFunction.Proper(xCell.Value)
> > Next
> > MALO:
> > ON ERROR GOTO 0
> > End Sub
> >

> > Las líneas que agrego en mayúscula, son las que interceptan el error, y lo


> > redireccionan a la etiqueta MALO:. En el ejemplo, si ocurre un error,

> > simplemente no se hace nada. Podrías generar un mensaje de error, pero

> > eso
> > es precisamente lo que se intenta evitar.
> >
> >
> > - - - - - -
> >
> >

> > "Paul P. Garcia" escribió:


> >
> >> Hola David.
> >>
> >> Soy nuevo en esto de codigos no le entiendo, pero mira que encontre esto
> >> y
> >> me esta funcionando bien.
> >>
> >> Dim rango As Range
> >> Dim cell As Range
> >> Set rango = Selection
> >> For Each cell In rango

> >> cell.Value = WorksheetFunction.Proper(cell.Value) ' a minúsculas


> >> Next
> >>
> >> Ahora me gustaria saber como mejorarlo o anticiparme ante cualquier error
> >> que se presente.
> >>

> >> "David" <sdgm04Q...@hotmail.com> escribió en el mensaje


> >> news:A0A9AB84-E679-424C...@microsoft.com...
> >> > En lugar de utilizar un FOR para las filas y otro para las columnas,

> >> > podrías


> >> > dimensionar una variable tipo Range:
> >> >
> >> > Dim xCelda As Range
> >> >
> >> > y luego utilizar un FOR EACH para recorrer todas las celdas de el rango
> >> > seleccionado:
> >> >
> >> > For Each xCelda In Selection
> >> >

> >> > Ten en cuenta que esto podría fallarte si lo que tienes seleccionado no

> >> > es
> >> > un rango de celdas sino, por ejemplo, un grupo de autofromas. Para
> >> > evitar

> >> > mensajes de error en situaciones así, podrías agregar un control de


> >> > errores
> >> > (ON ERROR GOTO...)
> >> >
> >> > Saludos...
> >> >
> >> > - - - - - -
> >> >
> >> >

> >> > "Paul P. Garcia" escribió:

H�ctor Miguel

unread,
Jul 31, 2009, 12:48:45 PM7/31/09
to
hola, chicos !

> Ahora me gustaria hacer algo un poco mas avanzado, espero se pueda hacer.
> Quisiera que al presionar CTRL+M aparezca una venta con 3 opciones
> igual a la ventana de Word Cambiar Mayusculas minusculas
> Si esto fuera posible, claro esta.

> Poder elegir en cambiar todo mayusculas o todo minusculas...

aqui encuentras alternativas (+/- como lo que solicitas):
Mayusculas - Minusculas - Frase - Oracion
http://www.teladearana.es/seccion/excel/103-h10.html

insluso, existe otra alternativa +/- "barata", que...
-> no requiere de formulas
-> ni de codigo
-> (solo que tengas instaladas algunas fuentes)
cambia el tipo de fuente para esa hoja (o re/define el estilo general o el aplicado o, ???)

algunos tipos de letra que presentan solo mayusculas:
- Castellar
- Engravers MT
- Felix Titling
- Stencil
- Technic (este es del tipo "versalles")

algunos tipos de letra que presentan solo minusculas:
- Freshbot
- Poornut
- Pussycat

saludos,
hector.


Paul P. Garcia

unread,
Jul 31, 2009, 3:37:34 PM7/31/09
to
Hola.
Tengo una peque�a pregunta.
Ya cree mi macro ahora quisieara saber si puedo guardar esta macro y abrirlo
en cualquier momento y aplicarlo a mi documento excel en particular.
Es decir creo mi macro lo guardo ahora quiero abrir otro archivo excel en
este nuevo documento se aplica mi macro es decir se va a plicar a todos los
documentos, ma�ana abro excel y esta macro se va aplicar?
No me gustaria que se active esta macro para todos, solo quisiera tenerlo
guardo y a la hora de activarlo buscar la macro guardad si es que se puede
guardar y aplicarlo.

Tambien si es posible me gustaria saber si puedo aplicar esta macro para
todos los documentos.

Mi consulta:
1. en la parte "Guardar macro en" para que sirve que debo elegir?
2. Como guardar mi macro y aplicar a mi documento en especifico.
3. Como aplicar esta macro para todos los documentos.
4. Como aplicar mi macro a mi documento actual en el cual cree mi macro, que
esta macro se aplique solo a mi documento es decir abro mi documento y que
se abra la macro y se aplique automatico. Guardar mi documento excel junto
con mi macro y a la hora de abrir mi documento excel que tambien se aplique
la macro.

"David" <sdgm04Q...@hotmail.com> escribi� en el mensaje

news:100EC746-DA06-4FBF...@microsoft.com...
> Pues... s� es bastante lo que pides, pero lo bueno es que como dijera
> alguien, "en Excel, todo es posible". Yo personalmente creo que exager�
> un
> poco, pero al menos lo que quieres s� es posible. Creo que tengo un
> ejemplo
> por all� que hace lo que quieres. Eso s�: tendr�s que instalarlo en
> alguno
> de tus libros...
>
> S�lo una consulta, antes de darte una mano con esto: �Qu� versi�n de
> Office
> tienes, y en qu� lenguaje?


>
> - - - - - -
>
>

> "Paul P. Garcia" escribi�:


>
>> Hola David.
>>
>> Ahora me gustaria hacer algo un poco mas avanzado, espero se pueda hacer.
>> Quisiera que al presionar CTRL+M aparezca una venta con 3 opciones igual
>> a
>> la ventana de Word Cambiar Mayusculas minusculas
>> Si esto fuera posible, claro esta.
>> Poder elegir en cambiar todo mayusculas o todo minusculas.
>>

>> "David" <sdgm04Q...@hotmail.com> escribi� en el mensaje
>> news:C29802EE-179C-40EB...@microsoft.com...
>> > Disculpa. Por el c�digo que posteaste pens� que ya ten�as una regular
>> > experiencia en VBA...
>> >
>> > B�sicamente, el c�digo que comentas es lo que te suger�a. Ahora, para


>> > mayor
>> > seguridad, prueba con el siguiente:
>> >
>> > Sub ConvertrNomPropio()
>> > Dim xCell As Range
>> > ON ERROR GOTO MALO
>> > For Each xCell In Selection.Cells
>> > xCell.Value = WorksheetFunction.Proper(xCell.Value)
>> > Next
>> > MALO:
>> > ON ERROR GOTO 0
>> > End Sub
>> >

>> > Las l�neas que agrego en may�scula, son las que interceptan el error, y

>> > lo
>> > redireccionan a la etiqueta MALO:. En el ejemplo, si ocurre un error,

>> > simplemente no se hace nada. Podr�as generar un mensaje de error, pero


>> > eso
>> > es precisamente lo que se intenta evitar.
>> >
>> >
>> > - - - - - -
>> >
>> >

>> > "Paul P. Garcia" escribi�:


>> >
>> >> Hola David.
>> >>
>> >> Soy nuevo en esto de codigos no le entiendo, pero mira que encontre
>> >> esto
>> >> y
>> >> me esta funcionando bien.
>> >>
>> >> Dim rango As Range
>> >> Dim cell As Range
>> >> Set rango = Selection
>> >> For Each cell In rango

>> >> cell.Value = WorksheetFunction.Proper(cell.Value) ' a min�sculas


>> >> Next
>> >>
>> >> Ahora me gustaria saber como mejorarlo o anticiparme ante cualquier
>> >> error
>> >> que se presente.
>> >>

>> >> "David" <sdgm04Q...@hotmail.com> escribi� en el mensaje


>> >> news:A0A9AB84-E679-424C...@microsoft.com...
>> >> > En lugar de utilizar un FOR para las filas y otro para las columnas,

>> >> > podr�as


>> >> > dimensionar una variable tipo Range:
>> >> >
>> >> > Dim xCelda As Range
>> >> >
>> >> > y luego utilizar un FOR EACH para recorrer todas las celdas de el
>> >> > rango
>> >> > seleccionado:
>> >> >
>> >> > For Each xCelda In Selection
>> >> >

>> >> > Ten en cuenta que esto podr�a fallarte si lo que tienes seleccionado

>> >> > no
>> >> > es
>> >> > un rango de celdas sino, por ejemplo, un grupo de autofromas. Para
>> >> > evitar

>> >> > mensajes de error en situaciones as�, podr�as agregar un control de


>> >> > errores
>> >> > (ON ERROR GOTO...)
>> >> >
>> >> > Saludos...
>> >> >
>> >> > - - - - - -
>> >> >
>> >> >

>> >> > "Paul P. Garcia" escribi�:

0 new messages