PC Review


Reply
Thread Tools Rate Thread

Code to create a Histogram

 
 
=?Utf-8?B?RG9uIElyZWxhbmQ=?=
Guest
Posts: n/a
 
      27th Mar 2006
I am trying to use some VB code to generate a histogram of data. The input
range for the histogram can vary in the number of rows only. I am trying to
have the code be "generic" enough to know how many rows were filled with data
and use that info to populate the "Input Range" field for the histogram. The
code is as follows:

Application.Run "ATPVBAEN.xla!histogram", ActiveSheet.Range("B2:B3035"),
"Histo Chart", ActiveSheet.Range("$a$2:$a$58"), False, True, True, False

I would like to replace the first Activesheet.range statement with a
variable name. However, when I build the string value, I cannot place the
double quotes in the string (the macro thinks it is at the end of the string
value and won't insert the double quote).

The string I am trying to build is similar to :
InputRange = "Activesheet.range("b2:B" & ActualCount

I would then insert the InputRange variable for the first Activesheet.range
statement in the call to the Histogram. The macro gets lost after the second
double-quote.

Short of completely coding the histogram generation, does anyone have any
suggestions or ideas?

Please let me know.

Thanks
Don
 
Reply With Quote
 
 
 
 
=?Utf-8?B?VG9tIE9naWx2eQ==?=
Guest
Posts: n/a
 
      27th Mar 2006
Don't make a string, because that would be the long way around anyway. Use a
range reference as shown. I showed you another way to do it for the
reference for column A.

Dim ActualCount as Long
Dim InputRange as Range
' code that assigns actualcount a value ex:
' actualcount = Application.CountA(columns(2))
set InputRange = Activesheet.Range("B2:B" & ActualCount)
Application.Run "ATPVBAEN.xla!histogram", InputRange,
"Histo Chart", ActiveSheet.Range("$a$2").Resize(Actualcount,1), _
False, True, True, False

--
Regards,
Tom Ogilvy


"Don Ireland" wrote:

> I am trying to use some VB code to generate a histogram of data. The input
> range for the histogram can vary in the number of rows only. I am trying to
> have the code be "generic" enough to know how many rows were filled with data
> and use that info to populate the "Input Range" field for the histogram. The
> code is as follows:
>
> Application.Run "ATPVBAEN.xla!histogram", ActiveSheet.Range("B2:B3035"),
> "Histo Chart", ActiveSheet.Range("$a$2:$a$58"), False, True, True, False
>
> I would like to replace the first Activesheet.range statement with a
> variable name. However, when I build the string value, I cannot place the
> double quotes in the string (the macro thinks it is at the end of the string
> value and won't insert the double quote).
>
> The string I am trying to build is similar to :
> InputRange = "Activesheet.range("b2:B" & ActualCount
>
> I would then insert the InputRange variable for the first Activesheet.range
> statement in the call to the Histogram. The macro gets lost after the second
> double-quote.
>
> Short of completely coding the histogram generation, does anyone have any
> suggestions or ideas?
>
> Please let me know.
>
> Thanks
> Don

 
Reply With Quote
 
=?Utf-8?B?RG9uIElyZWxhbmQ=?=
Guest
Posts: n/a
 
      27th Mar 2006
I will give a try and let you know.

thanks

Don

"Tom Ogilvy" wrote:

> Don't make a string, because that would be the long way around anyway. Use a
> range reference as shown. I showed you another way to do it for the
> reference for column A.
>
> Dim ActualCount as Long
> Dim InputRange as Range
> ' code that assigns actualcount a value ex:
> ' actualcount = Application.CountA(columns(2))
> set InputRange = Activesheet.Range("B2:B" & ActualCount)
> Application.Run "ATPVBAEN.xla!histogram", InputRange,
> "Histo Chart", ActiveSheet.Range("$a$2").Resize(Actualcount,1), _
> False, True, True, False
>
> --
> Regards,
> Tom Ogilvy
>
>
> "Don Ireland" wrote:
>
> > I am trying to use some VB code to generate a histogram of data. The input
> > range for the histogram can vary in the number of rows only. I am trying to
> > have the code be "generic" enough to know how many rows were filled with data
> > and use that info to populate the "Input Range" field for the histogram. The
> > code is as follows:
> >
> > Application.Run "ATPVBAEN.xla!histogram", ActiveSheet.Range("B2:B3035"),
> > "Histo Chart", ActiveSheet.Range("$a$2:$a$58"), False, True, True, False
> >
> > I would like to replace the first Activesheet.range statement with a
> > variable name. However, when I build the string value, I cannot place the
> > double quotes in the string (the macro thinks it is at the end of the string
> > value and won't insert the double quote).
> >
> > The string I am trying to build is similar to :
> > InputRange = "Activesheet.range("b2:B" & ActualCount
> >
> > I would then insert the InputRange variable for the first Activesheet.range
> > statement in the call to the Histogram. The macro gets lost after the second
> > double-quote.
> >
> > Short of completely coding the histogram generation, does anyone have any
> > suggestions or ideas?
> >
> > Please let me know.
> >
> > Thanks
> > Don

 
Reply With Quote
 
=?Utf-8?B?RG9uIElyZWxhbmQ=?=
Guest
Posts: n/a
 
      27th Mar 2006
IT WORKED!!!!!!!!!!!!!!!!!!!!!!

Thank you for the assist!

I am assuming that anytime I need a range, I can establish a variable as a
range type and then set it with Set command (that makes sense...) The
Actualcount reference that you included (application.counta.. I am not sure
what that is doing. though. I tried doing a search for in in VB and return
empty. Can you offer a suggestion or point me in the right direction?


Thanks again for the help

Don
"Don Ireland" wrote:

> I will give a try and let you know.
>
> thanks
>
> Don
>
> "Tom Ogilvy" wrote:
>
> > Don't make a string, because that would be the long way around anyway. Use a
> > range reference as shown. I showed you another way to do it for the
> > reference for column A.
> >
> > Dim ActualCount as Long
> > Dim InputRange as Range
> > ' code that assigns actualcount a value ex:
> > ' actualcount = Application.CountA(columns(2))
> > set InputRange = Activesheet.Range("B2:B" & ActualCount)
> > Application.Run "ATPVBAEN.xla!histogram", InputRange,
> > "Histo Chart", ActiveSheet.Range("$a$2").Resize(Actualcount,1), _
> > False, True, True, False
> >
> > --
> > Regards,
> > Tom Ogilvy
> >
> >
> > "Don Ireland" wrote:
> >
> > > I am trying to use some VB code to generate a histogram of data. The input
> > > range for the histogram can vary in the number of rows only. I am trying to
> > > have the code be "generic" enough to know how many rows were filled with data
> > > and use that info to populate the "Input Range" field for the histogram. The
> > > code is as follows:
> > >
> > > Application.Run "ATPVBAEN.xla!histogram", ActiveSheet.Range("B2:B3035"),
> > > "Histo Chart", ActiveSheet.Range("$a$2:$a$58"), False, True, True, False
> > >
> > > I would like to replace the first Activesheet.range statement with a
> > > variable name. However, when I build the string value, I cannot place the
> > > double quotes in the string (the macro thinks it is at the end of the string
> > > value and won't insert the double quote).
> > >
> > > The string I am trying to build is similar to :
> > > InputRange = "Activesheet.range("b2:B" & ActualCount
> > >
> > > I would then insert the InputRange variable for the first Activesheet.range
> > > statement in the call to the Histogram. The macro gets lost after the second
> > > double-quote.
> > >
> > > Short of completely coding the histogram generation, does anyone have any
> > > suggestions or ideas?
> > >
> > > Please let me know.
> > >
> > > Thanks
> > > Don

 
Reply With Quote
 
=?Utf-8?B?VG9tIE9naWx2eQ==?=
Guest
Posts: n/a
 
      27th Mar 2006
It is the
=counta(A1:A30)

that you would use in the worksheet. Many, although not all, worksheet
functions are available for use in VBA (set the worksheetfunction object in
the object browser). You can often avoid looping and so forth using these
function. (application.Sum, application.Average, Application.Countif,
application.Vlookup).

In this case, counta counts non-empty cells If you data doesn't have blanks
embedded in it, it should count the number of cells in the column which are
non-blank and tell you the bottom row of your data (assuming it starts in
row1).

It was just a placeholder. You can do what you want.
cells(rows.count,2).End(xlup).row for example would probably be faster in
this case.

--
Regards,
Tom Ogilvy


"Don Ireland" wrote:

> IT WORKED!!!!!!!!!!!!!!!!!!!!!!
>
> Thank you for the assist!
>
> I am assuming that anytime I need a range, I can establish a variable as a
> range type and then set it with Set command (that makes sense...) The
> Actualcount reference that you included (application.counta.. I am not sure
> what that is doing. though. I tried doing a search for in in VB and return
> empty. Can you offer a suggestion or point me in the right direction?
>
>
> Thanks again for the help
>
> Don
> "Don Ireland" wrote:
>
> > I will give a try and let you know.
> >
> > thanks
> >
> > Don
> >
> > "Tom Ogilvy" wrote:
> >
> > > Don't make a string, because that would be the long way around anyway. Use a
> > > range reference as shown. I showed you another way to do it for the
> > > reference for column A.
> > >
> > > Dim ActualCount as Long
> > > Dim InputRange as Range
> > > ' code that assigns actualcount a value ex:
> > > ' actualcount = Application.CountA(columns(2))
> > > set InputRange = Activesheet.Range("B2:B" & ActualCount)
> > > Application.Run "ATPVBAEN.xla!histogram", InputRange,
> > > "Histo Chart", ActiveSheet.Range("$a$2").Resize(Actualcount,1), _
> > > False, True, True, False
> > >
> > > --
> > > Regards,
> > > Tom Ogilvy
> > >
> > >
> > > "Don Ireland" wrote:
> > >
> > > > I am trying to use some VB code to generate a histogram of data. The input
> > > > range for the histogram can vary in the number of rows only. I am trying to
> > > > have the code be "generic" enough to know how many rows were filled with data
> > > > and use that info to populate the "Input Range" field for the histogram. The
> > > > code is as follows:
> > > >
> > > > Application.Run "ATPVBAEN.xla!histogram", ActiveSheet.Range("B2:B3035"),
> > > > "Histo Chart", ActiveSheet.Range("$a$2:$a$58"), False, True, True, False
> > > >
> > > > I would like to replace the first Activesheet.range statement with a
> > > > variable name. However, when I build the string value, I cannot place the
> > > > double quotes in the string (the macro thinks it is at the end of the string
> > > > value and won't insert the double quote).
> > > >
> > > > The string I am trying to build is similar to :
> > > > InputRange = "Activesheet.range("b2:B" & ActualCount
> > > >
> > > > I would then insert the InputRange variable for the first Activesheet.range
> > > > statement in the call to the Histogram. The macro gets lost after the second
> > > > double-quote.
> > > >
> > > > Short of completely coding the histogram generation, does anyone have any
> > > > suggestions or ideas?
> > > >
> > > > Please let me know.
> > > >
> > > > Thanks
> > > > Don

 
Reply With Quote
 
Mike Middleton
Guest
Posts: n/a
 
      28th Mar 2006
Don -

If you want to have a slightly better histogram, you might decide on
"completely coding the histogram generation," borrowing the code from my
free Better Histogram add-in, available for download from www.treeplan.com.

- Mike
www.mikemiddleton.com

"Don Ireland" <(E-Mail Removed)> wrote in message
news:B9CFC656-8677-47C4-B314-(E-Mail Removed)...
> IT WORKED!!!!!!!!!!!!!!!!!!!!!!
>
> Thank you for the assist!
>
> I am assuming that anytime I need a range, I can establish a variable as a
> range type and then set it with Set command (that makes sense...) The
> Actualcount reference that you included (application.counta.. I am not
> sure
> what that is doing. though. I tried doing a search for in in VB and
> return
> empty. Can you offer a suggestion or point me in the right direction?
>
>
> Thanks again for the help
>
> Don
> "Don Ireland" wrote:
>
>> I will give a try and let you know.
>>
>> thanks
>>
>> Don
>>
>> "Tom Ogilvy" wrote:
>>
>> > Don't make a string, because that would be the long way around anyway.
>> > Use a
>> > range reference as shown. I showed you another way to do it for the
>> > reference for column A.
>> >
>> > Dim ActualCount as Long
>> > Dim InputRange as Range
>> > ' code that assigns actualcount a value ex:
>> > ' actualcount = Application.CountA(columns(2))
>> > set InputRange = Activesheet.Range("B2:B" & ActualCount)
>> > Application.Run "ATPVBAEN.xla!histogram", InputRange,
>> > "Histo Chart", ActiveSheet.Range("$a$2").Resize(Actualcount,1), _
>> > False, True, True, False
>> >
>> > --
>> > Regards,
>> > Tom Ogilvy
>> >
>> >
>> > "Don Ireland" wrote:
>> >
>> > > I am trying to use some VB code to generate a histogram of data. The
>> > > input
>> > > range for the histogram can vary in the number of rows only. I am
>> > > trying to
>> > > have the code be "generic" enough to know how many rows were filled
>> > > with data
>> > > and use that info to populate the "Input Range" field for the
>> > > histogram. The
>> > > code is as follows:
>> > >
>> > > Application.Run "ATPVBAEN.xla!histogram",
>> > > ActiveSheet.Range("B2:B3035"),
>> > > "Histo Chart", ActiveSheet.Range("$a$2:$a$58"), False, True, True,
>> > > False
>> > >
>> > > I would like to replace the first Activesheet.range statement with a
>> > > variable name. However, when I build the string value, I cannot
>> > > place the
>> > > double quotes in the string (the macro thinks it is at the end of the
>> > > string
>> > > value and won't insert the double quote).
>> > >
>> > > The string I am trying to build is similar to :
>> > > InputRange = "Activesheet.range("b2:B" & ActualCount
>> > >
>> > > I would then insert the InputRange variable for the first
>> > > Activesheet.range
>> > > statement in the call to the Histogram. The macro gets lost after
>> > > the second
>> > > double-quote.
>> > >
>> > > Short of completely coding the histogram generation, does anyone have
>> > > any
>> > > suggestions or ideas?
>> > >
>> > > Please let me know.
>> > >
>> > > Thanks
>> > > Don



 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
How do I create a CORRECT histogram? Brian Chisholm Microsoft Excel Charting 1 21st Apr 2008 02:18 PM
Re: create a Histogram? Mike Middleton Microsoft Excel Charting 0 6th Dec 2006 09:51 PM
Re: How do I create a histogram Bernard Liengme Microsoft Excel Charting 0 30th Nov 2006 11:53 PM
HOW CAN I CREATE A HISTOGRAM GRAPH FOR MY DATA? =?Utf-8?B?Tk5BTURJ?= Microsoft Excel Worksheet Functions 1 10th Jun 2006 08:24 PM
VB to create histogram Harley Feldman Microsoft Excel Discussion 2 19th Dec 2004 10:26 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 01:55 PM.