我在excel VBA中相当新,非常感谢你对此事的任何帮助。
工作簿包括来自范围A5的数据:AZ1000(新客户信息以新行输入,但某些单元格可能为空,具体取决于案例的性质)。当用户输入新的客户信息(开始一个新行)时,我希望现有数据(范围A5:AZ1000)向下移动一行,空白行显示在范围A5:AZ:5中。我希望用户能够单击一个宏“新客户端”来实现此目的。
应该注意的是,这是一个共享工作簿,因此我不能添加添加新行的宏。
以下是我正在使用的代码:
Sub shiftdown()
' shiftdown Macro
Dim lastRow As Long
Dim lastColumn As Long
Dim rngToCopy As Range
Dim rng As Range
Set rng = ActiveSheet.Range("A1").Value
lastColumn = ActiveSheet.Cells(4, Columns.Count).End(xlToLeft).Column
lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
If rng > 0 Then
ActiveSheet.Range("A5" & lastRow).Select
Selection.Copy
PasteSelection.Offset(1, 0).PasteSpecial xlPasteValues
'Error Object Required
End If
End Sub
答案 0 :(得分:0)
Set rng = ActiveSheet.Range("A1").Value
???
如果rng是一个范围,则将其替换为:
Set rng = ActiveSheet.Range("A1")
或如果rng是变量,请替换
Dim rng As Range
通过
Dim rng As variant
rng = ActiveSheet.Range("A1").Value
另一个错误:
您将rng声明为范围,然后测试它是否为> 0
If rng > 0 Then ...
不可能
答案 1 :(得分:0)
通常情况下,如果问题不包含任何显示努力的代码,我就不会回答,但是我开始编写以下内容,而实际上确实的问题显示代码,所以我也可以提供它。它可以实现你的目标。
Sub shiftdown()
' shiftdown Macro
Dim rng As Range
With ActiveSheet
If .Range("A1").Value > 0 Then
Set rng = .Range(.Cells(5, 1), _
.Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, _
.Cells(4, .Columns.Count).End(xlToLeft).Column))
rng.Offset(1, 0).Value = rng.Value
.Rows(5).EntireRow.ClearContents
End If
End With
End Sub