如何在Excel 2007中使用VBA重命名范围
我在PHP和Java中拥有8+以上的专业编程经验,但在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.
我写了下面的代码(loggingtestmacro检查如何命名一个范围)
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
在select范围时,我得到了下面的错误
Run-time error '1004' Select method of Range class failed
我无法理解这个错误是什么意思,为什么我只是通过添加工作表名称。
再次,下面的行是什么意思? 那里发生了什么? 我无法理解R2C1:R3C2的含义。 当我将A2:A3单元格命名为“类别”时,这个值来自logging的macros,
ActiveWorkbook.Names.Add Name:="categories", RefersToR1C1:="=CatAcc!R2C1:R3C1"
您不需要select范围Range("A2:A3").Select
。 下一行中的"=CatAcc!R2C1:R3C1"
将自动处理。
说明
“= CatAcc R2C1:R3C1”
- CatAcc是范围是的工作表
- R2C1意味着第2行第1列,它只是A2
- 类似地,R3C1是第3行第1行,它不过是A3
所以上面也可以写成
ActiveWorkbook.Names.Add NAME:="categories", RefersTo:="=CatAcc!$A$2:$A$3"