Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5
Default Unable to set the NumberFormat Property of the Range Class - ERROR

Hello all (sorry for the long post)

I have some VB code in Excel XP (sp2). Windows XP Prof - sp2
It takes some data from a database and builds a spreadsheet, this works
great.

However, now I am trying to format the numbers.
I receive the error messagae about unable to set the number format.

I have searched the news groups and found a few items, such as protection,
excel 97 bug about the focus on the button.
None of these things are working for me.

Below is a complete listing of my code...

This sub is called with an account number, the account numbers are also the
names of each sheet in the spreadsheet file.
Like I said, all the data goes in great, its when I hit the NumberFormat
line that I get the message.

I just added the select (because I read a thread where someone got this to
work when they did that.)
As you cantell, I'm total lost at this point, just trying this and that.

Any help at all would be great appreciated.

Thanks
Jon


Private Sub FillAccountSheet(SheetName As String)

Dim s As Worksheet
Dim x As Integer

For x = 1 To ThisWorkbook.Sheets.Count
If ThisWorkbook.Sheets(x).Name = SheetName Then
Set s = ThisWorkbook.Sheets(x)
Exit For
End If
Next x

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Dim fromDate As String
Dim toDate As String

fromDate = Sheet1.Cells(6, 3)
toDate = Sheet1.Cells(7, 3)

' open a connection to the database
With cn
.ConnectionString = "Provider=SQLOLEDB;data
source=*DATABASESERVER*;initial catalog=MMI;user id=*DBUSER*"
.Open
End With

s.Activate
s.Unprotect

' for the account specified (sheet name), group each vendors totals by
month and year with in the spreadsheet from and to dates
Dim SQL As String
SQL = "SELECT tblApVendor.Name, Period, [Year], " & _
"Sum([debitamt])-Sum([creditamt]) AS vendortotal " & _
"FROM tblGlJrnl INNER JOIN tblApVendor ON tblGlJrnl.Reference =
tblApVendor.VendorID " & _
"WHERE transdate = '" & fromDate & "' and transdate <='" & toDate &
"' AND AcctId='" & Left(s.Name, 4) & "00000' " & _
"GROUP BY tblApVendor.Name, Period, [Year]"

rs.Open SQL, cn, adOpenForwardOnly, adLockReadOnly

Dim OldVendor As String
Dim VendorRow As Integer

OldVendor = ""
VendorRow = 5
Do While Not rs.EOF

If rs("Name") < OldVendor Then
VendorRow = VendorRow + 1
s.Cells(VendorRow, 1) = rs("Name")
OldVendor = rs("Name")
End If

Dim TotalCol As Integer
Dim MonthPeriod As Integer
Dim YearPeriod As Integer

TotalCol = 2

Do While s.Cells(4, TotalCol) < ""

' convert the date column titles to GL periods
If Month(CDate(s.Cells(4, TotalCol))) 9 Then
MonthPeriod = Month(CDate(s.Cells(4, TotalCol))) - 9
YearPeriod = Year(CDate(s.Cells(4, TotalCol))) + 1
Else
MonthPeriod = Month(CDate(s.Cells(4, TotalCol))) + 4
YearPeriod = Year(CDate(s.Cells(4, TotalCol)))
End If

If MonthPeriod = rs("Period") And YearPeriod = rs("Year") Then
Exit Do
Else
TotalCol = TotalCol + 1
End If
Loop

s.Cells(VendorRow, TotalCol) = rs("VendorTotal")
s.Range("B" & CStr(VendorRow) & ":" & Chr$(64 + TotalCol) &
CStr(VendorRow)).Select
s.Range("B" & CStr(VendorRow) & ":" & Chr$(64 + TotalCol) &
CStr(VendorRow)).NumberFormat = "Currency"
rs.MoveNext
Loop

' if there is data in the sheet
If VendorRow 5 Then
' add the sum function to the month columns
TotalCol = 2
Do While s.Cells(4, TotalCol) < ""
s.Cells(VendorRow + 2, TotalCol) = "=sum(" & Chr$(64 + TotalCol) &
"5.." & Chr$(64 + TotalCol) & CStr(VendorRow + 1) & ")"
TotalCol = TotalCol + 1
Loop

' add the vendor sums
For x = 6 To VendorRow
s.Cells(x, TotalCol) = "=sum(B" & CStr(x) & ".." & Chr$(64 +
(TotalCol - 1)) & CStr(x) & ")"
Next x

s.Cells(VendorRow + 2, TotalCol) = "=sum(" & Chr$(64 + TotalCol) &
"5.." & Chr$(64 + TotalCol) & CStr(VendorRow + 1) & ")"
End If

rs.Close
Set rs = Nothing

cn.Close
Set cn = Nothing


End Sub


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Unable to set the NumberFormat Property of the Range Class - ERROR

When you turn on the macro recorder and format a cell as currency it is
recorded like this:

Selection.NumberFormat = "$#,##0.00"

"Currency" is not a valid argument to Numberformat.

--
Regards,
Tom Ogilvy

"Jon Delano" wrote in message
news:kHrkd.322122$wV.294228@attbi_s54...
Hello all (sorry for the long post)

I have some VB code in Excel XP (sp2). Windows XP Prof - sp2
It takes some data from a database and builds a spreadsheet, this works
great.

However, now I am trying to format the numbers.
I receive the error messagae about unable to set the number format.

I have searched the news groups and found a few items, such as protection,
excel 97 bug about the focus on the button.
None of these things are working for me.

Below is a complete listing of my code...

This sub is called with an account number, the account numbers are also

the
names of each sheet in the spreadsheet file.
Like I said, all the data goes in great, its when I hit the NumberFormat
line that I get the message.

I just added the select (because I read a thread where someone got this to
work when they did that.)
As you cantell, I'm total lost at this point, just trying this and that.

Any help at all would be great appreciated.

Thanks
Jon


Private Sub FillAccountSheet(SheetName As String)

Dim s As Worksheet
Dim x As Integer

For x = 1 To ThisWorkbook.Sheets.Count
If ThisWorkbook.Sheets(x).Name = SheetName Then
Set s = ThisWorkbook.Sheets(x)
Exit For
End If
Next x

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Dim fromDate As String
Dim toDate As String

fromDate = Sheet1.Cells(6, 3)
toDate = Sheet1.Cells(7, 3)

' open a connection to the database
With cn
.ConnectionString = "Provider=SQLOLEDB;data
source=*DATABASESERVER*;initial catalog=MMI;user id=*DBUSER*"
.Open
End With

s.Activate
s.Unprotect

' for the account specified (sheet name), group each vendors totals by
month and year with in the spreadsheet from and to dates
Dim SQL As String
SQL = "SELECT tblApVendor.Name, Period, [Year], " & _
"Sum([debitamt])-Sum([creditamt]) AS vendortotal " & _
"FROM tblGlJrnl INNER JOIN tblApVendor ON tblGlJrnl.Reference =
tblApVendor.VendorID " & _
"WHERE transdate = '" & fromDate & "' and transdate <='" & toDate

&
"' AND AcctId='" & Left(s.Name, 4) & "00000' " & _
"GROUP BY tblApVendor.Name, Period, [Year]"

rs.Open SQL, cn, adOpenForwardOnly, adLockReadOnly

Dim OldVendor As String
Dim VendorRow As Integer

OldVendor = ""
VendorRow = 5
Do While Not rs.EOF

If rs("Name") < OldVendor Then
VendorRow = VendorRow + 1
s.Cells(VendorRow, 1) = rs("Name")
OldVendor = rs("Name")
End If

Dim TotalCol As Integer
Dim MonthPeriod As Integer
Dim YearPeriod As Integer

TotalCol = 2

Do While s.Cells(4, TotalCol) < ""

' convert the date column titles to GL periods
If Month(CDate(s.Cells(4, TotalCol))) 9 Then
MonthPeriod = Month(CDate(s.Cells(4, TotalCol))) - 9
YearPeriod = Year(CDate(s.Cells(4, TotalCol))) + 1
Else
MonthPeriod = Month(CDate(s.Cells(4, TotalCol))) + 4
YearPeriod = Year(CDate(s.Cells(4, TotalCol)))
End If

If MonthPeriod = rs("Period") And YearPeriod = rs("Year") Then
Exit Do
Else
TotalCol = TotalCol + 1
End If
Loop

s.Cells(VendorRow, TotalCol) = rs("VendorTotal")
s.Range("B" & CStr(VendorRow) & ":" & Chr$(64 + TotalCol) &
CStr(VendorRow)).Select
s.Range("B" & CStr(VendorRow) & ":" & Chr$(64 + TotalCol) &
CStr(VendorRow)).NumberFormat = "Currency"
rs.MoveNext
Loop

' if there is data in the sheet
If VendorRow 5 Then
' add the sum function to the month columns
TotalCol = 2
Do While s.Cells(4, TotalCol) < ""
s.Cells(VendorRow + 2, TotalCol) = "=sum(" & Chr$(64 + TotalCol) &
"5.." & Chr$(64 + TotalCol) & CStr(VendorRow + 1) & ")"
TotalCol = TotalCol + 1
Loop

' add the vendor sums
For x = 6 To VendorRow
s.Cells(x, TotalCol) = "=sum(B" & CStr(x) & ".." & Chr$(64 +
(TotalCol - 1)) & CStr(x) & ")"
Next x

s.Cells(VendorRow + 2, TotalCol) = "=sum(" & Chr$(64 + TotalCol) &
"5.." & Chr$(64 + TotalCol) & CStr(VendorRow + 1) & ")"
End If

rs.Close
Set rs = Nothing

cn.Close
Set cn = Nothing


End Sub




  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,253
Default Unable to set the NumberFormat Property of the Range Class - ERROR

NumberFormat accepts the formatting string, not the name.
Most normal workbooks DO accept a style called "currency"


so it we combine it..(and want to avoid giving the cell the actual
currency style then..

activecell.numberformat =
activeworkbook.Styles("currency").NumberFormat

to just give the style..
activecell.style = "currency"


or the hard way..
activecell.numberformat = _
"_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)"



--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


Jon Delano wrote :

Hello all (sorry for the long post)

I have some VB code in Excel XP (sp2). Windows XP Prof - sp2
It takes some data from a database and builds a spreadsheet, this
works great.

However, now I am trying to format the numbers.
I receive the error messagae about unable to set the number format.

I have searched the news groups and found a few items, such as
protection, excel 97 bug about the focus on the button.
None of these things are working for me.

Below is a complete listing of my code...

This sub is called with an account number, the account numbers are
also the names of each sheet in the spreadsheet file.
Like I said, all the data goes in great, its when I hit the
NumberFormat line that I get the message.

I just added the select (because I read a thread where someone got
this to work when they did that.)
As you cantell, I'm total lost at this point, just trying this and
that.

Any help at all would be great appreciated.

Thanks
Jon


Private Sub FillAccountSheet(SheetName As String)

Dim s As Worksheet
Dim x As Integer

For x = 1 To ThisWorkbook.Sheets.Count
If ThisWorkbook.Sheets(x).Name = SheetName Then
Set s = ThisWorkbook.Sheets(x)
Exit For
End If
Next x

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Dim fromDate As String
Dim toDate As String

fromDate = Sheet1.Cells(6, 3)
toDate = Sheet1.Cells(7, 3)

' open a connection to the database
With cn
.ConnectionString = "Provider=SQLOLEDB;data
source=*DATABASESERVER*;initial catalog=MMI;user id=*DBUSER*"
.Open
End With

s.Activate
s.Unprotect

' for the account specified (sheet name), group each vendors totals
by month and year with in the spreadsheet from and to dates
Dim SQL As String
SQL = "SELECT tblApVendor.Name, Period, [Year], " & _
"Sum([debitamt])-Sum([creditamt]) AS vendortotal " & _
"FROM tblGlJrnl INNER JOIN tblApVendor ON tblGlJrnl.Reference
= tblApVendor.VendorID " & _
"WHERE transdate = '" & fromDate & "' and transdate <='" &
toDate & "' AND AcctId='" & Left(s.Name, 4) & "00000' " & _
"GROUP BY tblApVendor.Name, Period, [Year]"

rs.Open SQL, cn, adOpenForwardOnly, adLockReadOnly

Dim OldVendor As String
Dim VendorRow As Integer

OldVendor = ""
VendorRow = 5
Do While Not rs.EOF

If rs("Name") < OldVendor Then
VendorRow = VendorRow + 1
s.Cells(VendorRow, 1) = rs("Name")
OldVendor = rs("Name")
End If

Dim TotalCol As Integer
Dim MonthPeriod As Integer
Dim YearPeriod As Integer

TotalCol = 2

Do While s.Cells(4, TotalCol) < ""

' convert the date column titles to GL periods
If Month(CDate(s.Cells(4, TotalCol))) 9 Then
MonthPeriod = Month(CDate(s.Cells(4, TotalCol))) - 9
YearPeriod = Year(CDate(s.Cells(4, TotalCol))) + 1
Else
MonthPeriod = Month(CDate(s.Cells(4, TotalCol))) + 4
YearPeriod = Year(CDate(s.Cells(4, TotalCol)))
End If

If MonthPeriod = rs("Period") And YearPeriod = rs("Year") Then
Exit Do
Else
TotalCol = TotalCol + 1
End If
Loop

s.Cells(VendorRow, TotalCol) = rs("VendorTotal")
s.Range("B" & CStr(VendorRow) & ":" & Chr$(64 + TotalCol) &
CStr(VendorRow)).Select
s.Range("B" & CStr(VendorRow) & ":" & Chr$(64 + TotalCol) &
CStr(VendorRow)).NumberFormat = "Currency"
rs.MoveNext
Loop

' if there is data in the sheet
If VendorRow 5 Then
' add the sum function to the month columns
TotalCol = 2
Do While s.Cells(4, TotalCol) < ""
s.Cells(VendorRow + 2, TotalCol) = "=sum(" & Chr$(64 +
TotalCol) & "5.." & Chr$(64 + TotalCol) & CStr(VendorRow + 1) & ")"
TotalCol = TotalCol + 1
Loop

' add the vendor sums
For x = 6 To VendorRow
s.Cells(x, TotalCol) = "=sum(B" & CStr(x) & ".." & Chr$(64 +
(TotalCol - 1)) & CStr(x) & ")"
Next x

s.Cells(VendorRow + 2, TotalCol) = "=sum(" & Chr$(64 + TotalCol)
& "5.." & Chr$(64 + TotalCol) & CStr(VendorRow + 1) & ")"
End If

rs.Close
Set rs = Nothing

cn.Close
Set cn = Nothing


End Sub

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5
Default Unable to set the NumberFormat Property of the Range Class - ERROR

Thank you ... that worked perfectly.
When I looked at the help file and it showed 'General', then I assumed that
it used all the named formats from the "format cells" dialog.

Thanks again
Jon

"Tom Ogilvy" wrote in message
...
When you turn on the macro recorder and format a cell as currency it is
recorded like this:

Selection.NumberFormat = "$#,##0.00"

"Currency" is not a valid argument to Numberformat.

--
Regards,
Tom Ogilvy

"Jon Delano" wrote in message
news:kHrkd.322122$wV.294228@attbi_s54...
Hello all (sorry for the long post)

I have some VB code in Excel XP (sp2). Windows XP Prof - sp2
It takes some data from a database and builds a spreadsheet, this works
great.

However, now I am trying to format the numbers.
I receive the error messagae about unable to set the number format.

I have searched the news groups and found a few items, such as
protection,
excel 97 bug about the focus on the button.
None of these things are working for me.

Below is a complete listing of my code...

This sub is called with an account number, the account numbers are also

the
names of each sheet in the spreadsheet file.
Like I said, all the data goes in great, its when I hit the NumberFormat
line that I get the message.

I just added the select (because I read a thread where someone got this
to
work when they did that.)
As you cantell, I'm total lost at this point, just trying this and that.

Any help at all would be great appreciated.

Thanks
Jon


Private Sub FillAccountSheet(SheetName As String)

Dim s As Worksheet
Dim x As Integer

For x = 1 To ThisWorkbook.Sheets.Count
If ThisWorkbook.Sheets(x).Name = SheetName Then
Set s = ThisWorkbook.Sheets(x)
Exit For
End If
Next x

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Dim fromDate As String
Dim toDate As String

fromDate = Sheet1.Cells(6, 3)
toDate = Sheet1.Cells(7, 3)

' open a connection to the database
With cn
.ConnectionString = "Provider=SQLOLEDB;data
source=*DATABASESERVER*;initial catalog=MMI;user id=*DBUSER*"
.Open
End With

s.Activate
s.Unprotect

' for the account specified (sheet name), group each vendors totals by
month and year with in the spreadsheet from and to dates
Dim SQL As String
SQL = "SELECT tblApVendor.Name, Period, [Year], " & _
"Sum([debitamt])-Sum([creditamt]) AS vendortotal " & _
"FROM tblGlJrnl INNER JOIN tblApVendor ON tblGlJrnl.Reference =
tblApVendor.VendorID " & _
"WHERE transdate = '" & fromDate & "' and transdate <='" &
toDate

&
"' AND AcctId='" & Left(s.Name, 4) & "00000' " & _
"GROUP BY tblApVendor.Name, Period, [Year]"

rs.Open SQL, cn, adOpenForwardOnly, adLockReadOnly

Dim OldVendor As String
Dim VendorRow As Integer

OldVendor = ""
VendorRow = 5
Do While Not rs.EOF

If rs("Name") < OldVendor Then
VendorRow = VendorRow + 1
s.Cells(VendorRow, 1) = rs("Name")
OldVendor = rs("Name")
End If

Dim TotalCol As Integer
Dim MonthPeriod As Integer
Dim YearPeriod As Integer

TotalCol = 2

Do While s.Cells(4, TotalCol) < ""

' convert the date column titles to GL periods
If Month(CDate(s.Cells(4, TotalCol))) 9 Then
MonthPeriod = Month(CDate(s.Cells(4, TotalCol))) - 9
YearPeriod = Year(CDate(s.Cells(4, TotalCol))) + 1
Else
MonthPeriod = Month(CDate(s.Cells(4, TotalCol))) + 4
YearPeriod = Year(CDate(s.Cells(4, TotalCol)))
End If

If MonthPeriod = rs("Period") And YearPeriod = rs("Year") Then
Exit Do
Else
TotalCol = TotalCol + 1
End If
Loop

s.Cells(VendorRow, TotalCol) = rs("VendorTotal")
s.Range("B" & CStr(VendorRow) & ":" & Chr$(64 + TotalCol) &
CStr(VendorRow)).Select
s.Range("B" & CStr(VendorRow) & ":" & Chr$(64 + TotalCol) &
CStr(VendorRow)).NumberFormat = "Currency"
rs.MoveNext
Loop

' if there is data in the sheet
If VendorRow 5 Then
' add the sum function to the month columns
TotalCol = 2
Do While s.Cells(4, TotalCol) < ""
s.Cells(VendorRow + 2, TotalCol) = "=sum(" & Chr$(64 + TotalCol)
&
"5.." & Chr$(64 + TotalCol) & CStr(VendorRow + 1) & ")"
TotalCol = TotalCol + 1
Loop

' add the vendor sums
For x = 6 To VendorRow
s.Cells(x, TotalCol) = "=sum(B" & CStr(x) & ".." & Chr$(64 +
(TotalCol - 1)) & CStr(x) & ")"
Next x

s.Cells(VendorRow + 2, TotalCol) = "=sum(" & Chr$(64 + TotalCol) &
"5.." & Chr$(64 + TotalCol) & CStr(VendorRow + 1) & ")"
End If

rs.Close
Set rs = Nothing

cn.Close
Set cn = Nothing


End Sub






Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Unable to set the FormulaArrary property of the range class RTK Excel Worksheet Functions 0 April 13th 10 08:38 AM
VBA error: Unable to set the Values property of the Series class Marco Shaw Charts and Charting in Excel 1 July 12th 05 02:34 PM
Error: Unable to get the OLEObjects property of the worksheet class Grant Excel Programming 2 August 6th 04 02:20 PM
Unable to set the colorIndex Property of the Interior Class Error GriffyGriff Excel Programming 3 October 3rd 03 04:37 PM
Unable to set the Locked Property of the Range Class Stuart[_5_] Excel Programming 0 July 15th 03 06:59 PM


All times are GMT +1. The time now is 09:34 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"