[AccessD] Odd Excel Behavior - so what's new?

Heenan, Lambert Lambert.Heenan at chartisinsurance.com
Fri Nov 19 20:35:53 CST 2010


Thank you Duane!

This looks very promising indeed (not that I would expect anything less from you), and I will check it out on Monday when I get bal to the Office. 

Lambert


-----Original Message-----
From: Microsoft Access Database Discussion List [mailto:ACCESS-L at PEACH.EASE.LSOFT.COM] On Behalf Of Duane Hookom
Sent: Friday, November 19, 2010 6:06 PM
To: ACCESS-L at PEACH.EASE.LSOFT.COM
Subject: Re: Odd Excel Behavior - so what's new?

You shouldn't have to look at worksheets with your code since range names should be unique in the workbook.
 
Function Excel_Named_Range_Exists(sRangeName As String) As Boolean
    Dim result As Variant
    On Error Resume Next
    result = Range(sRangeName)
    If Err.Number = 0 Then
        Excel_Named_Range_Exists = True
     Else
        Excel_Named_Range_Exists = False
    End If
End Function

I use this simple code to document all the range names in a workbook
 
Sub GetRangeNames()
    Dim rng As Name
    For Each rng In ThisWorkbook.Names
        Debug.Print rng.Name, rng.RefersTo
    Next
End Sub

The results are like:
selIndCode    =Validation!$V$2:$V$62
selIndCodes   =Validation!$K$2:$K$61
selIndicators =Validation!$J$2:$J$61
tblFactories  =Validation!$A$3:$C$38
tblIndCodes   =Validation!$K$2:$L$61
tblIndicators =Validation!$J$2:$K$61
tblIndNames   =Validation!$V$2:$W$62

 
Duane Hookom
MS Access MVP
 
> From: Lambert.Heenan at CHARTISINSURANCE.COM
> 
> x-posted to Access-L and AccessD
> 
> I have a function which returns True or False depending on whether a specific named range exists in an Excel file. It looks like this...
> 
> Function Excel_NamedRangeExists(xlApp As Excel.Application, nSheet As 
> Integer, sRangeName As String) As Boolean 'return True if the range 
> exists, else return false Dim result As Variant
> 
> On Error Resume Next
> With xlApp
> result = .Sheets(nSheet).Range(sRangeName)' <== does the actual test 
> Excel_NamedRangeExists = (Err.Number = 0) End With On Error GoTo 0 End 
> Function
> 
> So the parameters for this function are
> 
> xlApp: an Excel.Application object that is already initialized with 
> the file in question opened
> nSheet: an Integer - the number (1 to n) of the worksheet to examine 
> for the named range
> sRangeName: a string - the name of the actual range to look for.
> 
> It is annoying that this routine requires the sheet number so I thought I'd try to re-write it so that the sheet number can be discovered at run time. This is what I came up with...
> 
> Function Excel_Named_Range_Exists(xlApp As Excel.Application, 
> sRangeName As String) As Boolean 'return True if the range exists, 
> else return false Dim result As Variant Dim bHit As Boolean Dim nSheet 
> As Integer
> 
> On Error Resume Next
> bHit = False
> With xlApp
> For nSheet = 1 To .Sheets.Count
> result = .Sheets(nSheet).Range(sRangeName) ' <== does the actual test 
> bHit = (Err.Number = 0) If bHit Then Exit For End If Next nSheet End 
> With On Error GoTo 0 Excel_Named_Range_Exists = bHit End Function
> 
> The idea is simple enough: loop through all the sheets in the workbook looking for the named range.
> 
> Note that the indicated lines in each function are identical, using the exact same parameters and data types. When I run both routines against the same Excel file with a named range in it. the old method works but yet the new one (Excel_Named_Range_Exists) simply does not find the named range. How can that be?
> 
> Puzzled (again) Lambert

 		 	   		  
--------------------------------------------------------------------------
The ACCESS-L list is hosted on a Windows(R) 2003 Server running L-Soft international's LISTSERV(R) software.  For subscription/signoff info and archives, see http://peach.ease.lsoft.com/archives/access-l.html .
                             COPYRIGHT INFO:
http://peach.ease.lsoft.com/scripts/wa.exe?SHOWTPL=COPYRIGHT&L=ACCESS-L




More information about the AccessD mailing list