C
Casper Hornstrup
I need to change the datatype of all cells in a column to text. I have the
following VBscript:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Call UpdateDatatypes
End Sub
Private Sub Workbook_Open()
Call UpdateDatatypes
End Sub
Private Sub UpdateDatatypes()
Dim myCell As Excel.Range
Dim myRng As Excel.Range
Dim wks As Excel.Worksheet
For Each wks In Me.Worksheets
Set myRng = wks.UsedRange.Cells
For Each myCell In myRng.Cells
If (Not Intersect(myCell, wks.Range("h:n")) Is Nothing) Then
myCell.Value = CStr(Replace(myCell.Value, ",", "."))
End If
If (Not Intersect(myCell, wks.Range("a:b")) Is Nothing) Then
myCell.Value = CStr(Replace(myCell.Value, ",", "."))
End If
Next
Next
End Sub
Now, any cells that have only digits in them will be converted to a number
type by Excel.
If I use:
myCell.Value = "A" & CStr(Replace(myCell.Value, ",", "."))
then cells will have a text type after the script is run. How do I keep
excel from changing the
type of the cells with only digits in them to number?
I need this because the MS JET OleDb provider for excel is stupid and will
only allow
reading of a cell if it has the same type as the the cell in same column in
the previous row
(if not it returns an empty string).
Casper
following VBscript:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Call UpdateDatatypes
End Sub
Private Sub Workbook_Open()
Call UpdateDatatypes
End Sub
Private Sub UpdateDatatypes()
Dim myCell As Excel.Range
Dim myRng As Excel.Range
Dim wks As Excel.Worksheet
For Each wks In Me.Worksheets
Set myRng = wks.UsedRange.Cells
For Each myCell In myRng.Cells
If (Not Intersect(myCell, wks.Range("h:n")) Is Nothing) Then
myCell.Value = CStr(Replace(myCell.Value, ",", "."))
End If
If (Not Intersect(myCell, wks.Range("a:b")) Is Nothing) Then
myCell.Value = CStr(Replace(myCell.Value, ",", "."))
End If
Next
Next
End Sub
Now, any cells that have only digits in them will be converted to a number
type by Excel.
If I use:
myCell.Value = "A" & CStr(Replace(myCell.Value, ",", "."))
then cells will have a text type after the script is run. How do I keep
excel from changing the
type of the cells with only digits in them to number?
I need this because the MS JET OleDb provider for excel is stupid and will
only allow
reading of a cell if it has the same type as the the cell in same column in
the previous row
(if not it returns an empty string).
Casper