ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Simple Text Editing Macro Help (https://www.excelbanter.com/excel-programming/395643-simple-text-editing-macro-help.html)

[email protected]

Simple Text Editing Macro Help
 
I am trying to record a simple macro to put a colon in front of the
character second from the right in a cell. Here's my issue:
I go to a cell, (let's say it has the number 1030 in it)
I start the macro recorder, give is a shortcut key (say, "W")
I click on the relative reference icon
I press F2 to edit the cell
I use the left arrow to move two positions to the left
I type in a colon (":")
I press return
Then I click on the end recording button
Now, what I want to happen is the when I go to the next cell and press
CTRIL-W is to have a colon inserted in front of the second character
from the right. So if this cell has the number 1045 in it I expect it
to end up as 10:45. What happens is it overwrites that cell with the
value from the previous cell with the colon in it. Instead of 10:45 I
get 10:30 again, and again, and again......sigh. Looking at the maco
in the VB editor, sure enough, theres the text "10:35". I don't want
the text. I want only the commands to enter edit mode in the current
cell and move two places to the left and insert a colon. In the
preVBA days this was SO easy: {edit}{left}{left}":"{down} and you were
done. That's all I want!
Thanks!


Piotr Zaniewski

Simple Text Editing Macro Help
 
Macro recorder isn't the bect solution for this, try something like:

Option Explicit

Sub colon()
Dim rng As Range
Dim c As Range
Dim dl As String

Set rng = Range("a1:a100")
Cells.NumberFormat = "@"
For Each c In rng
dl = Len(c)
c.Value = Left(c, 2) & ":" & Mid(c, 3, dl)
Next
End Sub

you can set any range you want, numberformat is used to force format
to text

regards

Piotr



Brian Withun

Simple Text Editing Macro Help
 
Here's my idea:

Private Sub CommandButton1_Click()
Dim S As String
Dim L As Integer
S = ActiveCell.Value
L = Len(S)
Dim NewS As String
NewS = "=" & Chr(34) & Left(S, L - 2) & ":" & Right(S, 2) &
Chr(34)
ActiveCell.Value = NewS
End Sub

There are some important assumptions in here, though. If you've got a
number like 1030, if you slap a colon in the middle and make 10:30
then you have changed the value of that cell. It's now 10:30am Janary
0th year 00. This equates to a numerical value of 0.447916667

Do you really want a macro that changes 1030 to 0.447916667 ?

If you have a cell with the contents "1030" which is NOT a number but
a string, then you can slap a colon in the middle and it will be a
different string which looks the way you want.

My sub, above, will take the number in your cell, turn it into a
string, then put a colon in the 2nd from the right. So 1000 becomes
"10:00" and 100000 becomes "100:00" and 123456789 becomes "1234567:89"

Maybe instead of a macro you can get away with applying a number
format like 0":"00 which will NOT change the contents of your cell,
but will affect the APPEARANCE of your data. In this way, 1000 looks
like 10:00 but still has the value of 1000.

HTH

Brian Herbert Withun


Michael

Simple Text Editing Macro Help
 
Assuming you want to place the colon after the second character (Everytime)
you can try this:
In my example I am using column K, as you can tell by the cells reference
number 11
Modify to suit your needs.

Dim i As Integer, iLastRow As Integer

iLastRow = Range("K65536").End(xlUp).Row

For i = 1 To iLastRow
Cells(i, 11).Activate
With ActiveCell
..NumberFormat = "@"
..Value = Mid(ActiveCell, 1, 2) & ":" & Mid(ActiveCell, 3, 250)

End With


Next i


--
If this posting was helpful, please click on the Yes button.
Regards,

Michael Arch.




" wrote:

I am trying to record a simple macro to put a colon in front of the
character second from the right in a cell. Here's my issue:
I go to a cell, (let's say it has the number 1030 in it)
I start the macro recorder, give is a shortcut key (say, "W")
I click on the relative reference icon
I press F2 to edit the cell
I use the left arrow to move two positions to the left
I type in a colon (":")
I press return
Then I click on the end recording button
Now, what I want to happen is the when I go to the next cell and press
CTRIL-W is to have a colon inserted in front of the second character
from the right. So if this cell has the number 1045 in it I expect it
to end up as 10:45. What happens is it overwrites that cell with the
value from the previous cell with the colon in it. Instead of 10:45 I
get 10:30 again, and again, and again......sigh. Looking at the maco
in the VB editor, sure enough, theres the text "10:35". I don't want
the text. I want only the commands to enter edit mode in the current
cell and move two places to the left and insert a colon. In the
preVBA days this was SO easy: {edit}{left}{left}":"{down} and you were
done. That's all I want!
Thanks!




All times are GMT +1. The time now is 04:17 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com