New*_*ner 5 excel vba excel-vba sendkeys
我需要在Excel中的每个当前数据区域后插入2个空行.
从理论上讲,我的代码应该工作并在数据之后插入它,但是在尝试了很多次之后,它会在数据之前插入它之后.
我哪里做错了?有人可以指导我吗?谢谢!
Sub AutoInsert2BlankRows()
Selection.CurrentRegion.Select
SendKeys "^{.}"
SendKeys "^{.}"
SendKeys "~"
ActiveCell.EntireRow.Select
'this chooses the whole row
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
End Sub
Run Code Online (Sandbox Code Playgroud)
这是我的图片以供进一步澄清.如您所见,有3个不同的电流区域由空行分隔.我需要的是在已经存在的空白行之外插入2个额外的空白行,以便在每个当前区域之间产生3个空行.(如果我之前不够清楚,请道歉.)
这就是你想要做的吗?
第一个例子
Sub AutoInsert2BlankRows()
' // Set Variables.
Dim Rng As Range
Dim i As Long
' // Target Range.
Set Rng = Range("A2:A10")
' // Reverse looping
For i = Rng.Rows.Count To 2 Step -1
' // Insert two blank rows.
Rng.Rows(i).EntireRow.Insert
Rng.Rows(i).EntireRow.Insert
' // Increment loop
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
编辑
要在每个空白行后添加两个空白行,请尝试以下操作。
第二个例子
Sub AutoInsert2BlankRows()
' // Set Variables.
Dim Rng As Range
Dim i As Long
' // Target Range.
Set Rng = Range("A2:A10")
' // Reverse looping
For i = Rng.Rows.Count To 2 Step -1
If Cells(i, 1).Value = 0 Then
' // Insert two blank rows.
Rng.Rows(i).EntireRow.Insert
Rng.Rows(i).EntireRow.Insert
End If
' // Increment loop
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
第三个例子
Option Explicit
Sub AutoInsert2BlankRows()
' // Set Variables.
Dim Rng As Range
Dim i As Long
' // Target Range.
Set Rng = ActiveSheet.UsedRange
' // Reverse looping
For i = Rng.Rows.Count To 1 Step -1
' // If entire row is empty then
If Application.CountA(Rows(i).EntireRow) = 0 Then
' // Insert blank row
Rows(i).Insert
Rows(i).Insert
End If
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1246 次 |
| 最近记录: |