Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming,microsoft.public.excel.sdk
|
|||
|
|||
![]()
aloha!
I'm trapping the WorksheetChange and WorksheetSelectionChange events with some C++ COM code and would like to properly iterate through the cells in the range object. Single cell or single block ranges are no problems, but I can't seem to detect/process cases where the range is discontinuous (as one encounters when ctrl-clicking various cells). In VBA, one can obviously use something like "for each cellObj in rangeObj". With COM, however, one is limited to using an object's properties/method; the desired results aren't readily available through the Cells or Index properties. On the surface it seems simple enough: check the "Count" property, then use Index(n) to access the individual cells. But a funny thing happens: Index(2) and onwards return cells that are not necessarily selected (ie. in the range). For example: if you select six cells in a diagonal (A2,B3,C4,D5,E6,F7), the results of Index(n) would be: (A2,A3,A4,A5,A6,A7). Ditto, I believe for Cells(n). And so this is a row offset parameter to the first cell of the range only and not at all useful. Am I missing something or has anyone experienced this? Best regards, Stephen |
#2
![]()
Posted to microsoft.public.excel.programming,microsoft.public.excel.sdk
|
|||
|
|||
![]()
I can't talk C++, but I fail to see why you can't use For Each
This is valifd VBA code from Automation For Each cell In xlApp.Activeworkbook.Range("A1:A10") where cell is declared as Excel.Range. -- HTH Bob Phillips ... looking out across Poole Harbour to the Purbecks (remove nothere from the email address if mailing direct) "stephen cacclin" wrote in message ... aloha! I'm trapping the WorksheetChange and WorksheetSelectionChange events with some C++ COM code and would like to properly iterate through the cells in the range object. Single cell or single block ranges are no problems, but I can't seem to detect/process cases where the range is discontinuous (as one encounters when ctrl-clicking various cells). In VBA, one can obviously use something like "for each cellObj in rangeObj". With COM, however, one is limited to using an object's properties/method; the desired results aren't readily available through the Cells or Index properties. On the surface it seems simple enough: check the "Count" property, then use Index(n) to access the individual cells. But a funny thing happens: Index(2) and onwards return cells that are not necessarily selected (ie. in the range). For example: if you select six cells in a diagonal (A2,B3,C4,D5,E6,F7), the results of Index(n) would be: (A2,A3,A4,A5,A6,A7). Ditto, I believe for Cells(n). And so this is a row offset parameter to the first cell of the range only and not at all useful. Am I missing something or has anyone experienced this? Best regards, Stephen |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Automation of change of data range | Charts and Charting in Excel | |||
iterating checkboxes | Excel Discussion (Misc queries) | |||
variable range automation | Charts and Charting in Excel | |||
Iterating through Cells .Net/Excel 2003 | Excel Programming | |||
Range.Formula and Range question using Excel Automation | Excel Programming |