Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Found another chart bug while running my 3800-line data visualization
Excel/VBA program today. In the course of six years fiddling with VBA in Excel, I've concluded that programmatic acess to charts is by far the biggest source of trouble in Excel/VBA programming. Since I can't find any other Internet-based venue for submission of bugs to Microsoft, I'll post this bug here. But first, I'll share a few of my other discoveries of weird chart behavior, so that others will not be driven to beat their heads against their desks as I have done. Tip 1: The size in screen coordinates of axis titles is incorrect until the axes are actually drawn on-screen. This means that screen updating must be enabled before getting these sizes. Tip 2 (the Golden Rule): You can't work with chart series if the series is not visible (as is the case if the linked cells are all empty, for example). Golden rule: set chart.DisplayBlanksAs=xlZero before changing the datasets of a chart series. Tip 3: In general, you can't programmatically access chart elements that can not be displayed (for example, you can't set the title of a completely empty chart). Tip 4: When moving the PlotArea within the ChartArea (by setting position of the top left corner), don't allow the bottom or left edges of the PlotArea to be moved outside the confines of the ChartArea. If you try, an error will be raised. And now, today's bug. When applying a Name to a ChartObject, strange things happen if that name contains any punctuation except for the underscore, or contains certain, but not all, of the extended ASCII characters, or contains a space. If you provide such a name then you will find that that particular chart is NOT RETURNED when iterating over the ChartObjects collection by using the For Each mechamism, even though ChartObjects.Count will show the correct number of charts. In fact, in a running program,you can add a watch on ChartObjects, expand it, and see that Count is correct, whereas the listed Chart nodes will be missing the ones that were assigned names as described above. The solution is to address each chart by its index, using Chartobjects.Count and a traditional For loop. Very weird. Okay, one more bug workaround I'm dying to share. When pasting Office tables, charts, graphics, etc. as metafiles, one often finds that colored text, and certain other colored graphical elements, are shown as black in the pasted metafile graphic. Fix this problem by pretending to print to a color printer before doing the cut and paste (go through the print dialogs, selecting a color printer, then cancel the print dialog). Thanks, Dave |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
please disregard hard to explain in one line, I found it on page 8 | New Users to Excel | |||
Passing chartobject as a parameter to sub | Excel Programming | |||
how to set a variable to a Chart? not ChartObject | Excel Programming | |||
ChartObject Name Restricion or Excel Bug | Excel Programming | |||
ChartObject index | Excel Programming |