Macro to toggle text orientation

N

nwarnoc1

Hi,

I write a lot of macros to simplify frequent steps, like turning the
AutoFilters on and off, i.e. toggling them.
Sub Toggle_AutoFilter()
Selection.AutoFilter
End Sub

That's probably my favorite. Use it all the time.

Another example is my Move On Enter macro that "toggles" from down to
right to off, based on the existing setting.

Sub Move_On_Enter()
'Toggle Move_On_Enter Feature
' 6/10/97
If Application.MoveAfterReturn = False Then
With Application
.MoveAfterReturn = True
.MoveAfterReturnDirection = xlDown
End With
ElseIf Application.MoveAfterReturnDirection = xlDown Then
Application.MoveAfterReturnDirection = xlToRight
ElseIf Application.MoveAfterReturnDirection = xlToRight Then
Application.MoveAfterReturn = False
End If
End Sub


So I'm trying to write one that will toggle the text orientation of the
selection from 0 to -90, and if it's not 0, then make it 0. I've tried
the following so far:

Sub ToggleTextOrientation()

If Selection.Orientation = 90 Then
Selection.Orientation = 0
ElseIf Selection.Orientation = 0 Then
Selection.Orientation = 90
ElseIf Selection.Orientation = -90 Then
Selection.Orientation = 0
End If

End Sub

I've also tried

If Selection.Orientation = 90 Then
Selection.Orientation = 0
ElseIf Selection.Orientation = 0 Then
Selection.Orientation = 90
ElseIf Selection.Orientation <> 0 Then
Selection.Orientation = 0
End If

AND

Select Case Selection.Orientation
Case 90
Selection.Orientation = 0
Case -90
Selection.Orientation = 0
Case 0
Selection.Orientation = 90
Case Else
Selection.Orientation = 0
End Select

Doesn't seem like it would be tricky. I'm just not looking at it right.


I finally put a watch on Selection.Orientation. I get
Watch :
Expression: Selection.Orientation
Value: -4128
Type: Variant/Long
Context: Module2.ToggleTextOrientation

OK, it's in the back of my mind that -4128 is the datatype code, or
something like that.

If it was related to the orientation, I would have thought the "Else"
conditions would handle it, but no such luck.

Right now, I'm drawing a blank on getting past that. Or perhaps it's
another problem entirely. Any ideas would be appreciate. It's not
urgent; it's just bugging me.

Thanks,
Neva
 
G

Guest

run this macro on a clean sheet (or put some text in C11)

Sub Checkit()
For i = -90 To 90 Step 1
Range("C11").Orientation = i
Cells(i + 91, 1) = i
Cells(i + 91, 2) = Range("C11").Orientation
Next
End Sub

and it should clear it up for you.
 
G

Guest

just to add, excel has the following defined constants and their
corresponding values:

xlDownward -4170
xlHorizontal -4128
xlupward -4171
xlVertical -4166

Select Case cell.orientation

case xlDownward ' -90

case xlHorizontal ' 0

case xlUpward ' 90

Case xlVertical

case else
' number of degrees

end Select


t
h
i
s

i
s

x
l
v
e
r
t
i
c
a
l
 
N

nwarnoc1

Tom,

Thank you for the info. I'm experimenting with both. However, it looks
to me as if the defined constants are for "ReadingDirection" rather
than Orientation, is that right?

Are there defined constants for Orientation?

I can no longer remember how to wade thru the Object Browser to a list
of these constants. Argh.

Thanks again,
Neva
 
N

nwarnoc1

Sorry, "readingorder"

Tom,

Thank you for the info. I'm experimenting with both. However, it looks
to me as if the defined constants are for "ReadingDirection" rather
than Orientation, is that right?

Are there defined constants for Orientation?

I can no longer remember how to wade thru the Object Browser to a list
of these constants. Argh.

Thanks again,
Neva
 
N

nwarnoc1

LOL - Nope, I should have known better than to doubt you; those are of
course the ones for orientation!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top