Механизм прерывания Java предназначен для такого сценария. Если метод, который вы хотите прервать, выполняет цикл, просто попросите его проверить состояние прерывания потока на каждой итерации. Если это прерывается, вызовите InterruptedException.
Затем, когда вы хотите прервать, вам просто нужно вызвать прерывание в соответствующем потоке.
Альтернативно, вы можете использовать подход Sun предложить в качестве альтернативы методу устаревших стопов. Это не требует исключения каких-либо исключений, метод будет нормально возвращаться.
Попробуйте этот код:
Sub getRangeAddress()
Dim oRng As Range
Set oRng = Evaluate("=INDIRECT(Address(2, 1, , , ""Sheet2""))")
If oRng.Parent.Name <> ActiveSheet.Name Then
MsgBox oRng.Address(, , , True)
End If
End Sub