2011-04-29 43 views
1

我正在嘗試從命名區域自動填充其右邊的單元格。原始範圍包含組合的單元格,並且大小爲4x4。我的問題是Autofill-方法需要Destination:=Range("..."),並且不需要像Destination:=xlSameAreaToTheRight那樣的東西。使用VBA從命名區域自動填充到Excel中的未命名目標

的解決辦法是,如果我可以做類似

Range("origin").AutoFill Destination:=(Range("origin").Area + Rows(4)), _ 
         Type:=xlFillDefault 

所以,我怎麼能找到格式A1:D4命名範圍的行列數,並添加像4周的cols呢?

爲您提供支持!

回答

3

我不知道你想要得到的結果是什麼,但在這裏是回答您的具體問題:

你可以在格式爲$ A $ 1的範圍爲字符串:使用.Address $ d $ 4並獲得列的數量只需將.Columns.Count添加到指定的範圍。 (使用偏移應該是沒有問題的範圍內的列的量添加到活動單元格。)

Dim TestRange As String 
Dim AmountColumns As Integer 

TestRange = ActiveWorkbook.Sheets(1).Range("Test").Address 
AmountColumns = ActiveWorkbook.Sheets(1).Range("Test").Columns.Count 
0

由於stema的答案,我發現了一個(很簡單)解決方案:

爲了行列的添加到命名範圍,並以此爲自動填充目標可以簡單地做

Range("origin").AutoFill Destination:=(Range("origin").Range("A1:H2")), _ 
         Type:=xlFillDefault 

什麼會自動填充四列兩行,以我們的「原點」:

|  1  |  2  | 
| 1,1 | 1,2 | 2,1 | 2,2 | 

這導致:

|  1  |  2  |  3  |  4  | 
| 1,1 | 1,2 | 2,1 | 2,2 | 2,7 | 3,12 | 3,54 | 3,96 | 
0

下面是使用@ STEMA的建議的一種方式。

Sub namedfill() 

    Dim locOrig As String 
    Dim firstCell As String 
    Dim lastCell As String 

    'Pluck address of top-left and bottom-right cells from .Address string 
    locOrig = Range("Origin").Address 
    firstCell = Left(locOrig, 4) 
    lastCell = Right(locOrig, 4) 

    Range("Origin").AutoFill Destination:=Range(firstCell, Range(lastCell).Offset(0, 4)), Type:=xlFillDefault 

End Sub