--- sc/source/ui/vba//vbarange.hxx	
+++ sc/source/ui/vba//vbarange.hxx
@@ -59,11 +59,13 @@
 #include <com/sun/star/sheet/XSpreadsheet.hpp>
 #include <com/sun/star/sheet/XSheetCellRangeContainer.hpp>
 
-#include "vbahelper.hxx"
+#include "vbahelperinterface.hxx"
 
 class ScTableSheetsObj;
 class ScCellRangesBase;
-typedef ::cppu::WeakImplHelper4< oo::excel::XRange, css::container::XEnumerationAccess, css::script::XDefaultMethod, css::script::XDefaultProperty > ScVbaRange_BASE;
+
+typedef InheritedHelperInterfaceImpl1< oo::excel::XRange >  ScVbaRange_BASE;
+
 class ArrayVisitor
 {
 public:
@@ -94,7 +96,6 @@ class ScVbaRange : public ScVbaRange_BAS
 	css::uno::Reference< oo::vba::XCollection > m_Areas;
 	css::uno::Reference< oo::vba::XCollection > m_Borders;
 	css::uno::Reference< css::table::XCellRange > mxRange;
-	css::uno::Reference< css::uno::XComponentContext > m_xContext;
 	css::uno::Reference< css::sheet::XSheetCellRangeContainer > mxRanges;
 	sal_Bool mbIsRows;
 	sal_Bool mbIsColumns;
@@ -116,10 +117,14 @@ class ScVbaRange : public ScVbaRange_BAS
 	css::uno::Reference< oo::excel::XRange > getArea( sal_Int32 nIndex  ) throw( css::uno::RuntimeException );
 	ScCellRangesBase* getCellRangesBase() throw ( css::uno::RuntimeException );
 	SfxItemSet* getCurrentDataSet( )  throw ( css::uno::RuntimeException );
-
+	css::uno::Reference< oo::vba::XCollection >& getBorders();
 public:
-	ScVbaRange( const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::table::XCellRange >& xRange, sal_Bool bIsRows = false, sal_Bool bIsColumns = false ) throw ( css::lang::IllegalArgumentException );
-	ScVbaRange( const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::sheet::XSheetCellRangeContainer >& xRanges, sal_Bool bIsRows = false, sal_Bool bIsColumns = false ) throw ( css::lang::IllegalArgumentException );
+	ScVbaRange( const css::uno::Reference< oo::vba::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::table::XCellRange >& xRange, sal_Bool bIsRows = false, sal_Bool bIsColumns = false ) throw ( css::lang::IllegalArgumentException );
+	ScVbaRange( const css::uno::Reference< oo::vba::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::sheet::XSheetCellRangeContainer >& xRanges, sal_Bool bIsRows = false, sal_Bool bIsColumns = false ) throw ( css::lang::IllegalArgumentException );
+	ScVbaRange( css::uno::Sequence< css::uno::Any > const& aArgs, css::uno::Reference< css::uno::XComponentContext >const& xContext );
+;
+	ScDocument* getScDocument();
+	ScDocShell* getScDocShell();
 
 	virtual ~ScVbaRange();
 
@@ -242,6 +247,10 @@ public:
 //     * object should be a lightweight as possible
 //     * we shouldn't need hacks like this below
 	static css::uno::Reference< oo::excel::XRange > ApplicationRange( const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Any &Cell1, const css::uno::Any &Cell2 ) throw (css::uno::RuntimeException);
+	virtual sal_Bool SAL_CALL GoalSeek( const css::uno::Any& Goal, const css::uno::Reference< oo::excel::XRange >& ChangingCell ) throw (css::uno::RuntimeException);
+	// XHelperInterface
+	virtual rtl::OUString& getServiceImplName();
+	virtual css::uno::Sequence<rtl::OUString> getServiceNames();
 };
 #endif /* SC_VBA_RANGE_HXX */
 
