gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:55:16 27 4
gpt4 key购买 nike

这是我在这个精彩论坛上的第一篇文章。我是 VBA 的新手,除了在学习时做一些练习之外,我一直在编写我的第一个有意义的宏。

虽然在下面复制了 WIP 代码,但让我给你一个背景。

根据支付期限和到期期限等各种输入,有一张表格来计算投资期限。

此表具有计算到期值的所有公式。

现在在表 2 上,我正在创建一个矩阵结构,其中包含付款期限和到期期限的交集。对于 1 年付款期限与到期 (1...25) 和下一个付款期限等的组合。

我正在编写一个宏,它将从表 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 日,IST 上午 3 点
嗨专家,
最后我的第一个 VBA 代码正在运行。它的速度很慢,但它正在运行。最后一个问题
我在代码行“Workbooks("himanshu.xlsm").Sheets("Sheet1").Range("J2").Copy Workbooks("himanshu.xlsm").Sheets("What if").Cells( cols,Rowsh)”,其中源带有正确的值(在 Debug模式下检查)但是当它被粘贴到目标时,它被粘贴为 0。当我检查目标表时,它以某种方式向我显示了一个公式(= Max (R1C1:X1Y1)。请注意,我从哪里复制值(源),它是作为选择 col J 的最大值的公式到达的 excel 计算。我怀疑代码正在复制公式而不是值。请建议

Option Explicit
Sub macro21()
'MsgBox ("Start")
Dim i As Integer, j As Integer
Dim PPT As Integer
Dim Term As Integer
Dim pptrange As Range ' Address of the Cell where PPT is maintained in Sheet 1
Dim termrange As Range ' Address of the Cell where Term is maintained in Sheet 1
Dim cols As Integer
Dim Rowsh As Integer

PPT = 3
Term = 5
cols = 3
Rowsh = 3
For i = 1 To PPT

For j = 1 To Term

Set pptrange = Workbooks("himanshu.xlsm").Sheets("Sheet1").Range("G2") ' Set pptrange and termrange locations
Set termrange = Workbooks("himanshu.xlsm").Sheets("Sheet1").Range("G3") ' Set pptrange and termrange locations
pptrange.Value = i
termrange.Value = j
***Workbooks("himanshu.xlsm").Sheets("Sheet1").Range("J2").Copy Workbooks("himanshu.xlsm").Sheets("What if").Cells(cols, Rowsh)***
' MsgBox ("Value is " & Cells(cols, Rowsh).Value)
MsgBox ("Value is " & Workbooks("himanshu.xlsm").Sheets("Sheet1").Range("J2"))


If j < Term Then
cols = cols
Rowsh = Rowsh + 1
End If
Next j
cols = cols + 1
Rowsh = 3
Next i

End Sub


我在代码行“Workbooks("himanshu.xlsm").Sheets("Sheet1").Range("J2").Copy Workbooks("himanshu.xlsm").Sheets("What if").Cells( cols,Rowsh)”,其中源带有正确的值(在 Debug模式下检查)但是当它被粘贴到目标时,它被粘贴为 0。当我检查目标表时,它以某种方式向我显示了一个公式(= Max (R1C1:X1Y1)。请注意,我从哪里复制值(源),它是作为选择 col J 的最大值的公式到达的 excel 计算。我怀疑代码正在复制公式而不是值。请建议

最佳答案

PPT是一个字符串,所以你应该使用:

PPT = ...

并不是
 Set PPT = 
Set用于分配对象变量,例如工作簿、工作表等。

编辑:正如 Jeeped 在他的评论中提到的,您必须更改数据类型。你不能在这样的循环中使用字符串。更改 TermPPTIntegerLong .

关于vba - Excel VBA - 编译错误 - 需要对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46283031/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com