What in the world is it doing??
Thanks for the suggestion - setting NumberFormat to "@" allows the value to
be set to the desired string value. Kind of nutty is that Excel converts
the string <715: 1.2 to time; turns out that it doesn't care how many
blanks are in the middle. Perhaps it just spots the colon and calls it a
day.
A follow-on question is: I can't find any information about NumberFormat.
It appears that the "@" serves to position string data in Value
before/after, so it's not shorthand for string type but more like an
operator. I fooled with it a little to see if I could set the NumberFormat
back to General after setting the string value, but Excel wouldn't accept
NumberFormat = "General". I also tried to set the cell format to Time in
foreground just to see what it looked like after the undesired conversion
but Excel refused. Seems that the string value "715: 1.2" really craps up
something inside, or else I badly misunderstand whatever it does. Anyhow,
guidance on where to find information on NumberFormat would be appreciated
if any sources come to mind.
Thanks,
George
"macropod" wrote in message
...
Hi George,
What it's doing is converting the cell contents (715: 1.2) to a time
value:
11:55:01 AM, actually. Where it heads off to from there I've no idea.
You can prevent the conversion by formatting the target cell as text:
With oCell
.NumberFormat = "@"
.Value = "0" & .Value
End With
Cheers
--
macropod
[MVP - Microsoft Word]
"G Lykos" wrote in message
...
Have run into a crazy problem. Have a macro that scans selected cells
and,
if the content is a string, does a string manipulation. However, have
discovered that if the content is a certain type of string, VBA goes
into
orbit.
Essence of situation: Select a series of cells in a pivot table. Cells
format is General. Execute a loop: For each cell in selection, if
typename(cell.value) = "String" then cell.value = "0" & cell.value.
Typical string data is <533: Then Text. Code works fine to make this
<0533: Then Text. However, when data is <715: 1.2, cell.value tests
true
as string, but cell.value = "0" & cell.value causes a cell value of
<0.496541666666667 instead of the intended <0715: 1.2, is still format
General, typename string, and the worksheet is wacked out and VBA code
jumps
out of the sub and starts executing in other subs that aren't even
referenced in it. End up having to use Task Manager to kill Excel, then
start over. So, what in the world is going on??
Win XP Pro, Office XP, both with all updates.
Thanks in advance for any ideas!
George
|