Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA求和函数在图纸之间传输数据_Vba_Sum - Fatal编程技术网

使用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"))