Home |
Search |
Today's Posts |
#14
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Useful but flawed.
And in the present situation, it may cause valid named ranges to be skipped. That's a disservice to the OP for you ? LOL Try this little experiment: - Name a blank worksheet "ThisIsARatherLongNameForASheet" - Select the range $A$1,$B$2,$C$3,$D$4,$E$5,$F$6,$G$7 and give it the a name using the "Name box" of the formula bar. Now in VBA use the range() property and the Names().referstoRange property to Select that new named range, see what happens... -- Regards, Luc. "Festina Lente" "Tom Ogilvy" wrote: It doesn't happen often, So making a generalized statement condemning RefersToRange without qualification seems a disservice to the OP. It is certainly a useful property when referring to names in other workbooks and other times as well. -- Regards, Tom Ogilvy "PapaDos" wrote in message ... It doesn't happen often, I think it is related to the 255 characters limit of the "RefersTo" property. In some situations, the refersToRange property can even generate an error, even if the named range is working properly... -- Regards, Luc. "Festina Lente" "Tom Ogilvy" wrote: Then that would be a bug that I have never run into and I have never seen mentioned anywhere. It always works for me and it the purpose of the property. -- regards, Tom Ogilvy "PapaDos" wrote: One more thing to consider, it happens that activesheet.names(X).referstorange and range("X") are different sizes ranges. The valid one should be range("X"). So, you should set "zNmRngB" to Range(zNmRng.name) before calling the Find() method on it... -- Regards, Luc. "Festina Lente" "Tom Ogilvy" wrote: I didn't get all the changes incorporated that I had intended: Sub aBC() Dim zNmRng As Name Dim zNmRngA As Range Dim sNmRngB As Range For Each zNmRng In ActiveSheet.Names ' Iterate through names. On Error Resume Next Set zNmRngB = zNmRng.RefersToRange On Error GoTo 0 If Not zNmRngB Is Nothing Then Set zNmRngA = zNmRngB.Find(what:="IMP", _ After:=zNmRngB(1), _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, _ MatchCase:=False, _ SearchFormat:=False) If Not zNmRngA Is Nothing Then 'Conditional formating code goes here End If End If Next End Sub The above worked fine for me. -- Regards, Tom Ogilvy wrote in message ups.com... Luc, If I use ActiveSheet.Names dosent that limit the search to just the names on the active sheet? or does it still look at a lot of unecessary space? Thanks for bringing this up Robert PapaDos wrote: It doesn't make much sense to search ( with find() ) the entire active sheet instead of your named ranges. You will get "false positives" on many occasions... -- Regards, Luc. "Festina Lente" " wrote: Thanks Tom, I Have got that working. Im using Activesheet because there are many sheets from on template that have the same names and I may need to run diffent pass/fail criteria on differnt sheets. Thanks Again Tom Ogilvy wrote: Dim zNmRng as Name Dim zNmRngA as Range Dim sNmRngB as Range For Each zNmRng In ActiveSheet.Names ' Iterate through names. On Error Resume Next set zNmRngB = zNmRng.RefersToRange On Error goto 0 if not zNmRngB is Nothing then set zNmRngA = Cells.Find(what:="IMP", _ After:=ActiveCell, _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, MatchCase:= False, _ SearchFormat:=False) if not zNmRngA is nothing Then 'Conditional formating code goes here End If end if Next You also might Try ThisWorkbook.Names instead of Activesheet.Names It depends on which names you want to look at. -- Regards, Tom Ogilvy " wrote: I need to search through the Named Ranges in a sheet and for the ones that contain certain text, in this case "IMP" then I need to set a conditonal format to the range. I have the conditonal formating part working but Im having trouble iterating through the names for the text My code is Dim zNmRng For Each zNmRng In ActiveSheet.Names ' Iterate through names. If zNmRng = Cells.Find(what:="IMP", After:=ActiveCell, LookIn:=xlValues, LookAt:= _ xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False) Then 'Conditional formating code goes here End If Next I am obviously using the find method incorrectly I also want to have a second condition if, the first conditon is true then I need to see if the name has "ID" in the name and if so skip the code. Im sure that once I figure out how to do the first part, the second is just a mater of nesting. Here are some examples of the named ranges: IMP_100_Hz ---- do LC_100_Hz ------ Skip IMP_ID ------------ Skip IMP_20K_Hz ---- do Any help will be appreciated Robert |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Iterate through a form | Excel Programming | |||
Iterate through controls | Excel Programming | |||
How to iterate through all Text Boxes on a Form? | Excel Programming | |||
Can't iterate thru a row with For | Excel Programming | |||
Iterate columns | Excel Programming |