You are on page 1of 5

Maysculas - Minsculas

Frase - Oracin

Por Hctor Miguel Orozco Diaz - Mvp MS Excel

Vlido para todas las versiones de Excel desde la versin 97 -2007

Cuntas veces hemos necesitado el tener en Excel una opcin como la tiene Word, para
poder cambiar una o varias celdas de mayscula a minscula o bien a tipo frase o tipo
oracin.....

Con los siguientes procedimientos podemos tener rpidamente convertida nuestra


celda o bien nuestra hoja completa dependiendo de nuestra necesidad

1.- Mediante un InputBox [ que podemos escribir en l, bien con la inicial o bien
escribiendo Frase, ttulo, minsculas o Mayusculas ] >>

Procedimiento:

Sub Capitaliza(Opcion As Byte): On Error Resume Next


If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
Dim ModoCalc, Eventos As Boolean, VolverA As Object, Confirma As Integer,
Cambio, _
AplicarEn As Range, Frase As Boolean, Celda As Range
With Application: .ScreenUpdating = False: Eventos = .EnableEvents
ModoCalc = .Calculation: .Calculation = xlCalculationManual
If TypeName(Selection) <> "Range" Then Set VolverA = Selection:
ActiveCell.Activate
If Selection.Count = 1 Then
Confirma = MsgBox("La seleccion actual es de ""solamente"" una celda..." & vbCr
&_
"Deseas aplicar el cambio en todas las celdas de la hoja ?", _
vbYesNoCancel + vbDefaultButton2, "Confirmacion requerida !!!")
If Confirma = vbCancel Then GoTo EndSub
Set AplicarEn = IIf(Confirma = vbNo, ActiveCell, _
ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlTextValues))
Else: Set AplicarEn = Selection.SpecialCells(xlCellTypeConstants, xlTextValues)
End If: Select Case Opcion: Case 0: GoTo SelectCase
Case 1: Cambio = vbUpperCase: Case 2: Cambio = vbLowerCase
Case 3: Cambio = vbProperCase: Case 4: Frase = True: End Select: GoTo Execute
SelectCase:
Select Case UCase(Left(Trim(InputBox("Elige el tipo de ""salida""" & vbCr & _
"[T] = Titulo" & vbTab & "[ I ] = minusculas" & vbCr & _
"[F] = Frase" & vbTab & "[A] = MAYUSCULAS", "Alternar
(May/min)usculas...")), 1))
Case "A": Cambio = vbUpperCase: Case "I": Cambio = vbLowerCase
Case "T": Cambio = vbProperCase: Case "F": Frase = True: Case Else: GoTo
EndSub

End Select
Execute:
For Each Celda In AplicarEn: If Frase _
Then Celda = UCase(Left(Celda, 1)) & LCase(Mid(Celda, 2)) _
Else Celda = StrConv(Celda, Cambio)
Next
EndSub:
.Calculation = ModoCalc: .EnableEvents = Eventos: End With: Set AplicarEn =
Nothing
If Not VolverA Is Nothing Then VolverA.Select: Set VolverA = Nothing
End Sub

2.- como en Office Word aadindole al siguiente procedimiento un atajo de teclado


[Alt + F3] y as poder alternar entre [may-min]uscula, frase, ttulo u oracin
combinando dicho atajo de teclado tal y como muestra el artculo que se os ofrece al
final ... >>

Sub CapitalizaComoWord(): On Error Resume Next


If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
Dim ModoCalc, Eventos As Boolean, VolverA As Object, Confirma As Integer,
Cambio, _
AplicarEn As Range, Frase As Boolean, Celda As Range
With Application: .ScreenUpdating = False: Eventos = .EnableEvents
ModoCalc = .Calculation: .Calculation = xlCalculationManual
If TypeName(Selection) <> "Range" Then Set VolverA = Selection:
ActiveCell.Activate
If Selection.Count = 1 Then
Confirma = MsgBox("La seleccion actual es de ""solamente"" una celda..." & vbCr
&_
"Deseas aplicar el cambio en todas las celdas de la hoja ?", _
vbYesNoCancel + vbDefaultButton2, "Confirmacion requerida !!!")
If Confirma = vbCancel Then GoTo EndSub2
Set AplicarEn = IIf(Confirma = vbNo, ActiveCell, _
ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlTextValues))
Else: Set AplicarEn = Selection.SpecialCells(xlCellTypeConstants, xlTextValues)
End If
If ActiveCell = StrConv(ActiveCell, vbProperCase) Then GoTo SkipCase2 Else
Cambio = vbUpperCase
If ActiveCell = UCase(ActiveCell) Then Cambio = vbLowerCase
If ActiveCell = LCase(ActiveCell) Then Cambio = vbProperCase
For Each Celda In AplicarEn: Celda = StrConv(Celda, Cambio): Next: GoTo
EndSub2
SkipCase2:
For Each Celda In AplicarEn: Celda = UCase(Left(Celda, 1)) & LCase(Mid(Celda,
2)): Next
EndSub2:

.Calculation = ModoCalc: .EnableEvents = Eventos: End With: Set AplicarEn =


Nothing
If Not VolverA Is Nothing Then VolverA.Select: Set VolverA = Nothing
End Sub

Ya tengas la versin de office 97 como tengas la versin nueva de Office 2007 >>

Ribbon-Barras de Herramientas Excel 97-2007 << aqui >>

Comentarios (1)
RSS feed Comments

Interesante, pero...
escrito por Xdc (Hctor Pancho) , octubre 06, 2008
muy interesante pero sabes, podrias explicar un poco como hacerlo para activar
esa opcin ya que el comn de las personas(me incluyo, no enteiende, se ve un
codigo presumo es para VB del mismo libro pero... como lo hacemos para
habilitarlo.
eso salu2
Pancho.
report abuse
vote down
vote up
Votes: +0
Escribir comentario
Nombre
Email
Ttulo
Comentario

smaller | bigger

Subscribe via email (Registered users only)


I have read and agree to the Terms of Usage.

Escribe los caracteres de la imagen

Nuevo Comentario
Please enable JavaScript to post a new comment
103

atsGi0DHGMqA

add

com_content

You might also like