根据单元格值在VBA中的多个工作表中导航

时间:2016-04-02 10:32:01

标签: excel vba excel-vba

我是一个相当新的VBA用户,并且在我去阅读论坛时学习的代码很少。

现在我想编写一些代码,我找不到办法在论坛中做这个/提示,所以我来请求你的帮助。

我有很多名称为标题的电子表格,代表这些人的费用。我的目标是创建一个文件,我在其中重新组合电子表格,然后想要在“主页”电子表格中提取费用参考。相关的区域将在同一行中标记为“Y”。

在“首页”电子表格中,我在第一页上有人名,例如“保罗”,“玛丽”,“皮埃尔”等......在同一栏中。

我想创建一个代码,可以查看电子表格“主页”中的名称,并将“命名”电子表格中的数据复制回“主页”。

“命名电子表格”的格式相同,所以我总是看同一列。

到目前为止,我已尝试过以下内容

Sub Expenses()

    Set wk=ThisWorkbok.sheets("Home")

    Dim Name as String
    Dim Expense as Integer
    line_newexpense = 9
    rowline = 10
    start_l =34

    Do While Name <> "#"
        Line = wk.Cells(start_l,3)
        Name = ThisWorkbook.Sheets("Home").Cells(line_newexpense,39).Value
        Expense = ThisWorkbook.Sheets(Name).Cells(rowline,3).Value

        For j=50 to 8
            If ThisWorkbook.Sheets(Name).Cells(25,j).Value="Y" Then
                Line = ThisWorkbook.Sheets(Name).Cells(3,j).Value
            End If
            rowline = rowline+1
        Next j

        line_newexpense = line_newexpense + 1
    Loop

问题是当我尝试运行它时遇到“错误9下标超出范围”,所以不确定我如何解决问题,

非常感谢您的提示!

亲切的问候,

1 个答案:

答案 0 :(得分:0)

您不需要VBA。您可以使用INDIRECT功能来实现您的目标。

例如

=INDIRECT(B1&"!$A$1")

B1具有工作表的名称,Say&#34; Paul&#34; A1是包含您需要的数据的单元格。

enter image description here

您还可以使用Y函数将IF部分纳入上述公式。