Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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
Excel VBA-编译错误-需要对象_Vba_Excel - Fatal编程技术网

Excel VBA-编译错误-需要对象

Excel VBA-编译错误-需要对象,vba,excel,Vba,Excel,这是我在这个精彩论坛上的第一篇帖子。我是VBA新手,除了在学习过程中进行一些练习外,还一直在编写我的第一个有意义的宏 下面是WIP代码的复制,让我给你一个背景 根据各种输入,如付款期限和到期期限,制作一张计算投资到期日的表格 本表提供了计算到期价值的所有公式 现在在第2页,我正在创建一个矩阵结构,其中包含付款期限和到期期限的交集。对于到期日为(1…25)的1年付款期限和下一个付款期限等的ex组合 我正在编写一个宏,它将从表1中选择用户选择,然后在矩阵中循环宏,捕获结果并将其粘贴到表2 我仍然远离

这是我在这个精彩论坛上的第一篇帖子。我是VBA新手,除了在学习过程中进行一些练习外,还一直在编写我的第一个有意义的宏

下面是WIP代码的复制,让我给你一个背景

根据各种输入,如付款期限和到期期限,制作一张计算投资到期日的表格

本表提供了计算到期价值的所有公式

现在在第2页,我正在创建一个矩阵结构,其中包含付款期限和到期期限的交集。对于到期日为(1…25)的1年付款期限和下一个付款期限等的ex组合

我正在编写一个宏,它将从表1中选择用户选择,然后在矩阵中循环宏,捕获结果并将其粘贴到表2

我仍然远离我必须实现的目标,但在选择和设置付款期限和到期期限的前几行中有一个代码

错误是编译错误-需要对象。我想不出它是什么。WIP代码复制如下

Private Sub Simulation_Click()
Dim PPT As String
Dim Term As String
MsgBox (" The Programme is starting now")

Set PPT = Workbooks("himanshu.xlsm").Worksheet("Sheet1").Range("G2").Value
Set Term = Workbooks("himanshu.xlsm").Worksheet("Sheet1").Range("G3").Value

For PPT = 1 To PPT  
    For Term = 1 To Term  
     ' Do something here  
    Next Term  
Next PPT  

End Sub
请帮忙 编辑#1-2017年9月19日凌晨3时10分 各位专家, 最后,我的第一个VBA代码正在运行。它很慢,但它在跑。最后一个问题 我在代码行“工作簿(“himanshu.xlsm”).Sheets(“Sheet1”).Range(“J2”).Copy工作簿(“himanshu.xlsm”).Sheets(“What if”).Cells(cols,Rowsh)”中有一个问题,其中while to source带有正确的值(在调试模式下选中),但粘贴到目标时,它被粘贴为0。当我检查目标工作表时,不知何故它向我显示了一个公式(=Max(R1C1:X1Y1)。请注意,从我复制值(源)的位置,它是一个excel计算,作为选择列J的Max的公式到达。我怀疑代码复制的是公式而不是值。请注意

选项显式
亚宏观21()
'MsgBox(“开始”)
尺寸i为整数,j为整数
Dim PPT作为整数
作为整数的Dim项
表1中PPT所在单元格的Dim pptrange As Range地址
Dim termrange作为表1中维护术语的单元格的范围地址
Dim cols作为整数
Dim Rowsh作为整数
PPT=3
期限=5
cols=3
Rowsh=3
对于i=1到PPT
对于j=1到项
设置pptrange=工作簿(“himanshu.xlsm”).工作表(“Sheet1”).范围(“G2”)”设置pptrange和术语范围位置
设置术语范围=工作簿(“himanshu.xlsm”)。工作表(“Sheet1”)。范围(“G3”)'设置术语范围和术语范围位置
pptrange.Value=i
termrange.Value=j
***工作手册(“himanshu.xlsm”)。工作表(“Sheet1”)。范围(“J2”)。复制工作手册(“himanshu.xlsm”)。工作表(“假设”)。单元格(cols,Rowsh)***
'MsgBox(“值为”&单元格(cols,Rowsh).Value)
MsgBox(“值为”)和工作簿(“himanshu.xlsm”).表(“表1”).范围(“J2”))
如果jEnd Sub是一个字符串,因此您应该使用:

PPT = ...
而不是

 Set PPT = 
Set
用于分配对象变量,如工作簿、工作表等


编辑:正如吉佩德在他的评论中提到的那样,你必须改变数据类型。你不能像那样在循环中使用字符串。将
Term
PPT
更改为
Integer
Long

对于字符串,不要使用
Set
。只需做
PPT=工作簿(“himanshu.xlsm”)。工作表(“Sheet1”)。范围(“G2”).Value
术语=工作簿(“himanshu.xlsm”).工作表(“Sheet1”).范围(“G3”).Value
在你去掉
Set
后,将
Dim PPT作为字符串更改为
Dim PPT作为字符串,将
Dim Term作为字符串,将
Dim Term作为字符串更改为
Dim Term作为字符串。此外,你还需要
工作表而不是
工作表
Hi Viktor,我编辑了你的帖子,将
Set
更改为
Set
,只是为了清晰,因为大写字母的
SET
不是有效的语法(IDE将对其进行更改).Hi Victor,dvirony and Jeeped谢谢你们的快速帮助。我对你们的响应速度感到惊讶。我删除了相同的,但得到了类型不匹配。我认为PPT是Microsoft对象,因此也更改了我的变量名并删除了集合。现在错误是“对象不支持此属性或方法Private Sub Simulation_Click()Dim ppt1作为字符串Dim Term1作为字符串”MsgBox(“示例文本”)ppt1=工作簿(“himanshu.xlsm”)。工作表(“Sheet1”)。范围(“G2”)。值Term1=工作簿(“himanshu.xlsm”)。工作表(“Sheet1”)。范围(“G3”).i=1到ppt1的值,j=1到Term1 ActiveWorkbook.ActiveSheet(“Sheet1”)。选择范围(“G2”)。值=1范围(“G3”)。值=1范围(“c3”)。值=应用程序。工作表(“Sheet1”)。函数。最大值(范围(“N7:n31”)).下一个值j下一个i结束Sub@RaviKantAgarwal正如Jeeped在上面所评论的,您需要将变量从
String
更改为
Long
,因为您无法从1运行到
String
的循环,谢谢..错误已解决..虽然我仍然面临另一个问题,但我更愿意先直接处理堆栈溢出,以便可以学习而不打扰各位专家再次感谢大家!!