2013-07-01 37 views
1

這可能有更好的邏輯,但使用註釋給用戶是我理解使這個選擇工作的唯一方法。也許你有更好的東西。如何使用具有命名範圍的偏移方法

我幾乎是在Windows XP機器上運行Excel 2010的新手。

我有一個命名範圍(說A2:D8),我稱之爲甘特圖。在A8中給用戶的一個提示是「必須在這條線的上方插入任何附加行」。這是因爲我不知道如何確保用戶在正確的位置添加他們的附加行,並且我不知道他們是否會在此處添加其他幾行後面的行,這些行不適用於我試圖捕捉。

如果我進入

Sub SelectRange() 
    Range("GanttArea").select 
End Sub 

這將選擇命名的範圍。我希望它上移一行,不要包含我的筆記。 如果我進入

Sub SelectRange() 
    Range("GanttArea").Offset(-1,0).Select 
End Sub 

它做移動的行了爲選擇像我想,但現在它包含的行A1:D1它們的標題行。我試圖爲甘特圖動態選擇數據,所以這是行不通的。

它剛剛發生,也許偏移量不會改變選擇,而只是將相同數量的選定單元格向上移動一行。

如何使命名範圍展開或縮小,以便用戶可以添加或刪除行?

謝謝 柯克

回答

5

你可以用它代替OffsetResize方法,所以:

Sub SelectRange() 
    Dim rng as Range: Set rng = Range("GanttArea") 

    Set rng = rng.Resize(rng.Rows.Count - 1, rng.Columns.Count) 
    rng.Select 

End Sub 

或者,你可以使用Offset功能簡單地定義你的命名範圍。

這些設置有點棘手,但只要您的列A不包含任何空白單元格,這應該工作。在您的名字的經理,輸入公式爲GantArea:

=OFFSET($A$1,1,0,COUNTA($A:$A)-1,4)

如果你這樣做,你應該能夠在表區域的任何位置插入額外的行,只要這些行不爲空值列A,範圍將根據該公式動態調整大小。

enter image description here

+0

1用於使用命名範圍與計算尺寸。之前沒有看到過這個訣竅 - 喜歡它!每次引用該名稱時我都會自動更新它? – Floris

+0

@弗洛里斯不知道它是否會在名稱被*引用時更新(例如,作爲另一個公式中的參數),但是我不確定它是否需要,因爲一般公式不會改變無論如何這個範圍的尺寸。但是,動態命名的範圍非常有趣。他們非常適合繪製動態/不斷變化的數據集等。 –

+0

謝謝大衛,第二個例子,名稱管理器區域的偏移似乎可以完成這項工作。我將不得不在某個地方讀到這個。我從來沒有想過要在那裏添加VBA命令。我甚至不知道你可以把VBA放在宏觀之外。儘管如此,我在第一個例子中遇到了一些問題。當我鍵入(或複製並粘貼)時,「Set Rng ...」在我的代碼中顯示爲紅色。我很確定我打錯了,但我也複製了它,但它仍然無法正常工作。這似乎是我找不到的語法錯誤。當我運行時,它只是說「語法錯誤」。 – user2498217