Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 172
Default HasExternalLink Function

I am looking to write a function to see if a cell has an
external link. I know that if it does, it will have:

"="
"["
"]"

I could realistically use .Hasformula property to test
that the cell is a formula and then use the Find Method
with some sort of combined search

..Find([, lookin:=xlValues)
..Find(], lookin:=xlValues)

But is there an easier way to test (Boolean) if a cell has
an external link?
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 860
Default HasExternalLink Function

Hi ExcelMonkey,

Here's a UDF you could try:

Public Function HasExtLink(rng As Range) As Variant
Dim reg As Object

On Error GoTo ErrHandler

If rng.HasFormula Then
Set reg = CreateObject("VBScript.RegExp")
With reg
.Pattern = "\=\[.+\].+"
HasExtLink = .test(rng.Formula)
End With
Else
HasExtLink = False
End If

ExitRoutine:
Set reg = Nothing
Exit Function
ErrHandler:
HasExtLink = CVErr(Err.Number)
Resume ExitRoutine
End Function


If you put this into a standard module, you can use it in Excel just like
you would any other worksheet function. You could probably make this more
robust by looking for additional things after the last "]", but it should
work in most cases.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]


ExcelMonkey wrote:
I am looking to write a function to see if a cell has an
external link. I know that if it does, it will have:

"="
"["
"]"

I could realistically use .Hasformula property to test
that the cell is a formula and then use the Find Method
with some sort of combined search

.Find([, lookin:=xlValues)
.Find(], lookin:=xlValues)

But is there an easier way to test (Boolean) if a cell has
an external link?


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 172
Default HasExternalLink Function

Hey Jake, sorry its taken so long to reply to this. Have
tried this code below but cannot seem to get it to work.
I am using it as a function in VBA which I call in VBA.
That is I am not trying to use it as User Defined
Function in Excel. On the line of code that says:

HasExtLink = .test(rng.Formula)

It does not give me a TRUE value when the variable rng
has a formula with an external link. Why is this? I
can't say I understand the Pattern or TEST Property. It
appears as though you look for a pattern and then test to
see if it exists.

When I goto the immediate window and check on the rng
variable I get

?rng.formula
='C:\Documents and Settings\Me\My
Documents\TestModel\[ModelA.xls]Inputs'!$L$39

Test Property is still FALSE

Thanks


-----Original Message-----
Hi ExcelMonkey,

Here's a UDF you could try:

Public Function HasExtLink(rng As Range) As Variant
Dim reg As Object

On Error GoTo ErrHandler

If rng.HasFormula Then
Set reg = CreateObject("VBScript.RegExp")
With reg
.Pattern = "\=\[.+\].+"
HasExtLink = .test(rng.Formula)
End With
Else
HasExtLink = False
End If

ExitRoutine:
Set reg = Nothing
Exit Function
ErrHandler:
HasExtLink = CVErr(Err.Number)
Resume ExitRoutine
End Function


If you put this into a standard module, you can use it

in Excel just like
you would any other worksheet function. You could

probably make this more
robust by looking for additional things after the

last "]", but it should
work in most cases.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address

unmonitored]


ExcelMonkey wrote:
I am looking to write a function to see if a cell has

an
external link. I know that if it does, it will have:

"="
"["
"]"

I could realistically use .Hasformula property to test
that the cell is a formula and then use the Find Method
with some sort of combined search

.Find([, lookin:=xlValues)
.Find(], lookin:=xlValues)

But is there an easier way to test (Boolean) if a cell

has
an external link?


.

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 860
Default HasExternalLink Function

Hi,

Sorry - messed up the Pattern. Try this instead:

.Pattern = "\=.+\[.+\].+\!.+"

Another option would be to use the Like operator. Probably a little more
straightforward:

HasExtLink = rng.Formula like "=*[[]*[]]*!*"

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]


ExcelMonkey wrote:
Hey Jake, sorry its taken so long to reply to this. Have
tried this code below but cannot seem to get it to work.
I am using it as a function in VBA which I call in VBA.
That is I am not trying to use it as User Defined
Function in Excel. On the line of code that says:

HasExtLink = .test(rng.Formula)

It does not give me a TRUE value when the variable rng
has a formula with an external link. Why is this? I
can't say I understand the Pattern or TEST Property. It
appears as though you look for a pattern and then test to
see if it exists.

When I goto the immediate window and check on the rng
variable I get

?rng.formula
='C:\Documents and Settings\Me\My
Documents\TestModel\[ModelA.xls]Inputs'!$L$39

Test Property is still FALSE

Thanks


-----Original Message-----
Hi ExcelMonkey,

Here's a UDF you could try:

Public Function HasExtLink(rng As Range) As Variant
Dim reg As Object

On Error GoTo ErrHandler

If rng.HasFormula Then
Set reg = CreateObject("VBScript.RegExp")
With reg
.Pattern = "\=\[.+\].+"
HasExtLink = .test(rng.Formula)
End With
Else
HasExtLink = False
End If

ExitRoutine:
Set reg = Nothing
Exit Function
ErrHandler:
HasExtLink = CVErr(Err.Number)
Resume ExitRoutine
End Function


If you put this into a standard module, you can use it in Excel just
like you would any other worksheet function. You could probably
make this more robust by looking for additional things after the

last "]", but it should
work in most cases.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]


ExcelMonkey wrote:
I am looking to write a function to see if a cell has an
external link. I know that if it does, it will have:

"="
"["
"]"

I could realistically use .Hasformula property to test
that the cell is a formula and then use the Find Method
with some sort of combined search

.Find([, lookin:=xlValues)
.Find(], lookin:=xlValues)

But is there an easier way to test (Boolean) if a cell has
an external link?


.


Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
copy of excel file not showing formulal/function in the function b oaallam Excel Discussion (Misc queries) 4 September 6th 07 01:20 PM
LINKEDRANGE function - a complement to the PULL function (for getting values from a closed workbook) [email protected] Excel Worksheet Functions 0 September 5th 06 03:44 PM
Emulate Index/Match combo function w/ VBA custom function Spencer Hutton Excel Worksheet Functions 2 May 2nd 05 05:26 PM
Adding a custom function to the default excel function list DonutDel Excel Programming 3 November 21st 03 03:41 PM
User-Defined Function pre-empting Built-in Function? How to undo???? MarWun Excel Programming 1 August 6th 03 09:31 PM


All times are GMT +1. The time now is 09:50 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"