S
stephen cacclin
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
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