根据单元格值在VBA中的多张图纸中导航
我是一个相当新的VBA用户,在我去阅读论坛的时候很少学习代码 现在我想编写一些代码,但在论坛上找不到方法/提示,所以我来寻求您的帮助 我有很多以姓名为标题的电子表格,代表这些人的开支。我的目标是创建一个文件,在该文件中我重新组合了电子表格,然后希望提取“主”电子表格中的费用参考。相关面积将在同一行中标记为“Y” 在“主页”电子表格的第一页,我有一些人的名字,例如“保罗”、“玛丽”、“皮埃尔”等等。。。。在同一列中 我想创建一个代码,可以查看电子表格“Home”中的名称,并将数据从“Named”电子表格复制回“Home”电子表格 格式将是相同的“命名电子表格”,所以我总是在看同一列 到目前为止,我已经尝试了以下方法根据单元格值在VBA中的多张图纸中导航,vba,excel,Vba,Excel,我是一个相当新的VBA用户,在我去阅读论坛的时候很少学习代码 现在我想编写一些代码,但在论坛上找不到方法/提示,所以我来寻求您的帮助 我有很多以姓名为标题的电子表格,代表这些人的开支。我的目标是创建一个文件,在该文件中我重新组合了电子表格,然后希望提取“主”电子表格中的费用参考。相关面积将在同一行中标记为“Y” 在“主页”电子表格的第一页,我有一些人的名字,例如“保罗”、“玛丽”、“皮埃尔”等等。。。。在同一列中 我想创建一个代码,可以查看电子表格“Home”中的名称,并将数据从“Named”电
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
子费用()
Set wk=ThisWorkbok.sheets(“主页”)
将名称设置为字符串
将费用设置为整数
行_newexpense=9
行线=10
开始=34
在命名为“#”时执行此操作
行=工作单元格(开始,3)
名称=此工作簿.Sheets(“Home”).Cells(第39行)。值
费用=此工作簿.工作表(名称).单元格(第3行).值
对于j=50到8
如果此工作簿.Sheets(Name).Cells(25,j).Value=“Y”则
行=此工作簿.Sheets(Name).Cells(3,j).Value
如果结束
行线=行线+1
下一个j
行新费用=行新费用+1
环
问题是,当我尝试运行它时,我遇到了一个“错误9下标超出范围”,因此不确定如何应对该问题
非常感谢您的提示
您好,您不需要VBA。您可以使用
间接
功能实现您想要的功能
比如说
=INDIRECT(B1&"!$A$1")
其中B1
有工作表的名称,比如说“Paul”,而A1
是包含所需数据的单元格
您还可以使用
IF
函数对上述公式中的Y
部分进行因子计算。您好,欢迎使用堆栈溢出。我已经编辑了您的问题,以使您的代码更具可读性。缩进良好的代码通常会吸引更高质量的答案。祝你好运嘿,卡罗莱纳,当您设置wk=ThisWorkbok.sheets(“Home”)
工作簿拼写错误时,这意味着您无法访问Line=wk.Cells(start\u l,3)
,因为未设置wk。然后,当您尝试将j从50迭代到8时,您需要指定j将是j-1,如下所示:对于j=50到8步骤1
,但是使用此j将向后,行线将向前。请添加“Home”和“Name”的屏幕截图sheets@user3598756永远不要问screenshost,除非是UI问题。看。卡罗莱纳:然后发布文件@不管怎样,我不是在截图中要求代码!谢谢你的评论和帮助!我曾尝试实施这些更改,但希望我头版上的摘录是一行接一行,我不确定间接是否是最好的选择。我想使用VBA,因为它允许灵活性和格式设置,但如果间接让我很高兴学习这个技巧(例如:有三行费用,但我希望#1和#3一行出现在“主”表上,我该怎么做?谢谢!