更改起点行

时间:2019-03-04 20:51:11

标签: excel vba

有一个我要根据另一个工作表上的输入量进行修改的表单。无法获取下面的代码。我是VBA新手,所以可能很简单。不确定我的“ Dim”和“ Set”命令是否正确,因为我收到“ startrow1”的“ Object Required”错误。

代码应添加可变数量的行(这样做)。但是问题是出发点。 “默认”起始点将为“ A20”,但是需要根据先前在其上方添加的带有另一个宏的行数进行更改。 (ws1.Range。(“ D45”)。value)。 因此,如果“ D45”为2,则起点应更改为“ A22”。

Sub Addquotedrows()

Application.ScreenUpdating = False

Dim ws1     As Worksheet
Dim ws2     As Worksheet
Dim addquoted As Range
Dim startrow As Range
Dim startrow1 As Range


Set ws1 = Sheets("Input")
Set ws2 = Sheets("PakEmail")
Set addquoted = ws1.Range("D46")
Set startrow = ws2.Range("a20")

Set startrow1 = startrow + ws1.Range("D45").Value

Let X = 0
Do While X < addquoted

With ws2
    startrow1.EntireRow.Insert Shift:=xlUp
End With

X = X + 1
Loop

Application.ScreenUpdating = True

End Sub

2 个答案:

答案 0 :(得分:1)

仅将 startrow 偏移D45中的行数。

Set startrow = ws2.Range("a20").offset(ws1.Range("D45").Value, 0)

答案 1 :(得分:0)

使用您拥有的代码,您需要将startrow设置为整数,然后进行加法,并将startrow1 =的范围设置为如下所示的值:

Dim startrow Integer
Set startrow = 20
Set startrow1 = Range("A" & startrow + 
ws1.Range("D45").Value

您的问题是,您正在向范围中添加一个整数,就像在大城市中并说要查找地址9一样。 错误消息说,“好吧,9什么?” 这有道理吗?

因此,您现在有2个选择。 1)使用具有偏移量的上述地址 2)使用此处显示的数字。 哪一种都能满足您的需求,取决于您的样式,什么对您有意义,以及如果使用另一种方式可能会绊倒其他代码。 (这种可能性很小,但仍有可能)。

祝你好运!