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.
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ó:
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�:
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ó:
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�:
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ó:
> 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.
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�: