使用VBA求和函数在图纸之间传输数据
我正在编写一个循环数据输入脚本。在某些单元格中,使用求和函数是有用的,因为数据可能位于多个相邻单元格中的一个,在这些单元格中,知道数据将位于哪个单元格是不可预测的,而该范围内的所有其他单元格将可预测为零 我从命名变量开始使用VBA求和函数在图纸之间传输数据,vba,sum,Vba,Sum,我正在编写一个循环数据输入脚本。在某些单元格中,使用求和函数是有用的,因为数据可能位于多个相邻单元格中的一个,在这些单元格中,知道数据将位于哪个单元格是不可预测的,而该范围内的所有其他单元格将可预测为零 我从命名变量开始 Dim file As Variant, I As Integer, Cval As String 输入我的文件夹,开始循环并打开工作簿 file = Dir("C:\Users\test\") While (file <> "") Workbooks.Open
Dim file As Variant, I As Integer, Cval As String
输入我的文件夹,开始循环并打开工作簿
file = Dir("C:\Users\test\")
While (file <> "")
Workbooks.Open (file)
脚本在第一页和第二页中运行,没有问题
Workbooks(file).Sheets("Cover Page").Range("E39:J39").Copy
Workbooks("VBA Practice Workbook.xlsm").Sheets("Sheet1").Cells(I, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Workbooks(file).Sheets("Cover Page").Range("E41:J41").Copy
Workbooks("VBA Practice Workbook.xlsm").Sheets("Sheet1").Cells(I, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Workbooks(file).Sheets("Scoring (pg 1)").Range("B59:C59").Copy
Workbooks("VBA Practice Workbook.xlsm").Sheets("Sheet1").Cells(I, 4).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
然后我切换到使用sum函数,得到一条错误消息。知道是什么导致了我的问题吗
Workbooks("VBA Practice Workbook.xls").Sheets("Sheet1").Range (Cells(I, 6) = Application.WorksheetFunction.Sum(Workbooks(file).Sheets("Scoring (pg 2)").Range("B6:B14")))
Workbooks("VBA Practice Workbook.xlsm").Sheets("Sheet1").Range (Cells(I, 7) = Application.WorksheetFunction.Sum(Workbooks(file).Sheets("Scoring (pg 2)").Range("C6:C14")))
我猜您正在尝试将表1上的某些单元格设置为表“评分(第2页)”上的单元格总数 但您当前的语句是将活动工作表的
单元格(I,6)
的值与总和计算的值进行比较,然后根据比较结果是返回True
还是False
,将结果用作范围
属性的参数
我相信您正试图做到:
Workbooks("VBA Practice Workbook.xls").Sheets("Sheet1").Cells(I, 6).Value = _
Application.WorksheetFunction.Sum(Workbooks(file).Sheets("Scoring (pg 2)").Range("B6:B14"))
Workbooks("VBA Practice Workbook.xlsm").Sheets("Sheet1").Cells(I, 7).Value = _
Application.WorksheetFunction.Sum(Workbooks(file).Sheets("Scoring (pg 2)").Range("C6:C14"))
我在该代码中保留了您的原始工作簿名称,但您可能希望确定正在写入的是.xls
还是.xlsm
工作簿。错误消息是什么?这通常能最好地说明问题所在。工作簿(“VBA练习工作簿.xls”).Sheets(“Sheet1”).Range(单元格(I,6)=Application.WorksheetFunction.Sum(工作簿(文件).Sheets(“评分(第2页)”).Range(“B6:B14”))
语句毫无意义-您不能将True
或False
作为参数传递给范围
属性您需要完全限定单元格(I,6)
引用。未指定工作簿和工作表,这可能会造成一些混乱。错误消息为“对象不支持此属性或方法”错误438我也在处理复制目标函数。我得到的错误消息是一个对象定义的错误范围(单元格(I,26),单元格(I,27))。选择工作簿(文件).Sheets(“评分(第4页)”).Range(“B4:C4”)。复制目标:=工作簿(“VBA实践工作簿.xlsm”)。Sheets(“Sheet1”).Range(单元格(I,26),单元格(I,27))
感谢您的帮助。代码现在正在正确循环感谢您的帮助@YowE3k。我还在努力使用一个复制目标函数。我收到的错误消息是一个对象定义的错误。您能指出我在这个函数中忽略了什么吗。我不想使用复制和粘贴,因为我知道这会大大降低我的脚本速度tly.范围(单元格(I,26),单元格(I,27))。选择工作簿(文件).Sheets(“评分(第4页)”).Range(“B4:C4”)。复制目标:=工作簿(“VBA练习工作簿.xlsm”).Sheets(“Sheet1”).Range(单元格(I,26),单元格(I,27))
@mresner(1)范围(单元格(I,26),单元格(I,27))。选择是浪费时间。(2)工作簿(文件).Sheets(“评分(第4页)”).Range(“B4:C4”).Copy Destination:=工作簿(“VBA实践工作簿.xlsm”).Sheets(“Sheet1”).Range(单元格(I,26),单元格(I,27))
应该是工作簿(文件)(评分(第4页)”.Range(“B4:C4”).Copy Destination:=工作簿(“VBA Practice工作簿.xlsm”).Sheet1.Range(工作簿(“VBA Practice工作簿.xlsm”).Sheet1.Cells(I,26),工作簿(“VBA Practice工作簿.xlsm”).Sheet1.Cells(I,27))
或者更简单地说,…工作簿(“VBA Practice工作簿.xlsm”).Sheet1.Range(Z1:AA1).偏移量(I-1,0).Value=工作簿(文件).Sheets(“评分(第4页)”).Range(“B4:C4”).Value
(我希望-在注释中回答问题有点困难-这应该是一个新问题。)
Workbooks("VBA Practice Workbook.xls").Sheets("Sheet1").Cells(I, 6).Value = _
Application.WorksheetFunction.Sum(Workbooks(file).Sheets("Scoring (pg 2)").Range("B6:B14"))
Workbooks("VBA Practice Workbook.xlsm").Sheets("Sheet1").Cells(I, 7).Value = _
Application.WorksheetFunction.Sum(Workbooks(file).Sheets("Scoring (pg 2)").Range("C6:C14"))