2013-07-01 21 views
3

比方說,我有作爲參數傳遞給函數在給定範圍:指的Excel單元格中的絕對和相對

Function wrapper(current As range) 

現在我想獲得該單元的值到左(列A)。

例如,如果當前的單元格是H12,我想獲取單元格文本,它位於A12

謝謝您的幫助


OK,讓我們離開了上述問題。一般來說,我想要實現的是獲取Range類型的變量。在下面的例子:

Function wrapper(current As range) 
Set hardwarePos = Cells(current.Row, 1) 

我hardwarePos的類型是set,我不能把它傳遞給另一個函數(GetFormula(VAR爲範圍):

Function wrapper(current As range) 
Set hardwarePos = Cells(current.Row, 1) 
wrapper = GetFormula(hardwarePos) 

這是不工作... 。


感謝對你的提示,我喜歡KazJaw解決它的方式,但還是老樣子,我有一些問題,爲什麼這不起作用:

Function wrapper(current As range) 
Dim hardwarePos As range 
hardwarePos = Cells(current.Row, 1) 
wrapper = hardwarePos.Text 
End Function 
+2

你可以使用'current.Offset( 0,-1).value'得到它 –

+0

謝謝,那麼絕對refferning到細胞呢?對於例如給定單元格H12我只想將「H」更改爲「A」,結果爲A12?我不能使用偏移量,因爲它以相對的方式工作。 – friko

+2

這樣的事情:'... = cells(current.row,1).value' –

回答

-1

使用此:

Public Function wrapper(current As String) 
    Dim newCell As String 
    newCell = Range(current).Offset(0, -1).Address 

    ' Range(newCell).Select 
    ' Range(newCell).value = "blabla" 
End Function 

從目前的細胞發生地址,並使用它獲得前一個單元格的地址中的列項(與offset功能,-1是「一列左」)

然後通過使用Range(newCell)你可以做你想要的單元格,選擇,書寫,ecc。

您可以致電與包裝:wapper(MyCell.Address)

+0

謝謝,但我不想將範圍的函數參數更改爲字符串。 – friko

2

作爲公式(沒有VBA)

=INDIRECT(ADDRESS(ROW(),1)) 

隨着VBA

Function wrapper(current As Range) 
wrapper = Sheets(current.Parent.Name).Cells(current.Cells(1).Row, 1).Value 
End Function 
+0

他不希望列1 /「A」。他確實希望當前列之前的列。 – varocarbas

+0

以及爲什麼你不直接使用current.Row? – varocarbas

+1

看到弗里科的另外兩個職位 - 顯然Friko確實想列A – brettdj