Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
How do I change the datatype of a cell?
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 |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
How do I change the datatype of a cell?
Private Sub UpdateDatatypes()
Dim myCell As Excel.Range Dim myRng As Excel.Range Dim wks As Excel.Worksheet For Each wks In ThisWorkbook.Worksheets Set myRng = Intersect(wks.UsedRange, wks.Range("A:B,H:N")) For Each myCell In myRng myCell.NumberFormat = "@" myCell.Value = "'" & CStr(Replace(myCell.Text, ",", ".")) Next Next End Sub Assuming you still want to replace any comma with a period/fullstop -- Regards, Tom Ogilvy "Casper Hornstrup" wrote in message ... 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 |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
How do I change the datatype of a cell?
In the following macro to each value of the defined cells
is "'" added. Due to this it gets a string. Sub MakeString() x = 4 For i = 1 To x Cells(i, 1).Value = "'" & Cells(i, 1).Value Next End Sub Regards Klaus -----Original Message----- 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 . |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
How do I change the datatype of a cell?
Hi Casper,
Use numberformat to change cell format. mycell.Value = CStr(Replace(mycell.Value, ",", "")) mycell.NumberFormat = "@" 'Change to Text Format Regards, Shah Shailesh http://members.lycos.co.uk/shahweb/ (Excel Add-ins) *** Sent via Developersdex http://www.developersdex.com *** Don't just participate in USENET...get rewarded for it! |
#5
Posted to microsoft.public.excel.programming
|
|||
|
|||
How do I change the datatype of a cell?
Thanks Klaus. This worked beatifully.
Also thanks to you all for the NumberFormat solution. I'm sure I'm going to need that sometime. "Klaus" wrote in message ... In the following macro to each value of the defined cells is "'" added. Due to this it gets a string. Sub MakeString() x = 4 For i = 1 To x Cells(i, 1).Value = "'" & Cells(i, 1).Value Next End Sub Regards Klaus -----Original Message----- 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 . |
#6
Posted to microsoft.public.excel.programming
|
|||
|
|||
How do I change the datatype of a cell?
Note that my code
myCell.Value = "'" & CStr(Replace(myCell.Text, ",", ".")) also included the single quote just for interest. -- Regards, Tom Ogilvy "Casper Hornstrup" wrote in message ... Thanks Klaus. This worked beatifully. Also thanks to you all for the NumberFormat solution. I'm sure I'm going to need that sometime. "Klaus" wrote in message ... In the following macro to each value of the defined cells is "'" added. Due to this it gets a string. Sub MakeString() x = 4 For i = 1 To x Cells(i, 1).Value = "'" & Cells(i, 1).Value Next End Sub Regards Klaus -----Original Message----- 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 . |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Importing data. Problem with datatype in column | Excel Discussion (Misc queries) | |||
How do I validate the datatype of a cell's value in Excel 2007? | Excel Discussion (Misc queries) | |||
making copied cells change with change in original cell | Excel Worksheet Functions | |||
Save as a dbf file changes datatype | Excel Discussion (Misc queries) | |||
Vlookup datatype(?) issue | Excel Worksheet Functions |