簡體   English   中英

如何在Excel 2007中使用VBA重命名范圍

[英]How to rename range using VBA in excel 2007

我有8年以上的PHP和Java專業編程經驗,但沒有VBA的經驗。 立即學習。

我正在嘗試制作房屋預算表(僅出於VBA學習目的)。 為此,我已經完成了

* In new excel (2007) file, rename sheet 1 as 'Forms' And Sheet2 as 'CatAcc'
* In sheet 'CatAcc', I'm using (planning) column A for categories and B for Account
* Row 1 is heading (A1 = "Categories", B1="Account"
* Using forms sheet (cell C2) & VBA button, I want to add a new category,
  sort it alphabetically and then rename range to add newly added row.

我為此編寫了以下代碼(已記錄testmacro以檢查如何命名范圍)

Sub AddCat_Click()
    'Copy data as last row
    Worksheets("CatAcc").Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = Worksheets("Forms").Cells(2, "C").Value

    'Find total Rows in categories
    Dim totalRows
    totalRows = Worksheets("CatAcc").Range("A2").End(xlDown).Row

    'Define Range
    Dim rng
    rng = "A2:A" & totalRows
    'MsgBox rng

    'Select the range - Getting error in following line.
    Worksheets("CatAcc").Range(rng).Select

    'Name the range
    ActiveWorkbook.Names.Add Name:="categories", RefersToR1C1:="=CatAcc!R2C1:R3C1"

    'Sort range alphabetically

    'Apply range as drop-down options
End Sub
Sub testmacro()
    Range("A2:A3").Select
    ActiveWorkbook.Names.Add Name:="categories", RefersToR1C1:= _
        "=CatAcc!R2C1:R3C1"
End Sub

選擇范圍時,出現以下錯誤

Run-time error '1004'
Select method of Range class failed

我無法理解該錯誤的含義,以及為什么我只能通過添加工作表名稱來獲取該錯誤。

同樣,以下幾行是什么意思? 那里發生了什么事? 我無法理解R2C1:R3C2的含義。 當我將A2:A3單元命名為“類別”時,此值來自錄制的宏

ActiveWorkbook.Names.Add Name:="categories", RefersToR1C1:="=CatAcc!R2C1:R3C1"

您無需選擇范圍Range("A2:A3").Select 下一行中的"=CatAcc!R2C1:R3C1"會自動進行處理。

說明

“= CatAcc R2C1:R3C1”

  1. CatAcc是工作表的范圍
  2. R2C1表示第2行第1列,不過是A2
  3. 同樣,R3C1是第3行第1行,不過是A3

所以上面也可以寫成

ActiveWorkbook.Names.Add NAME:="categories", RefersTo:="=CatAcc!$A$2:$A$3"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM