如何在特定位置插入行

时间:2016-01-19 03:30:11

标签: excel vba excel-vba

我有一个Excel工作簿,我在列'A'中定义了一系列数字 我想在遇到Integer Value的位置插入一行。

这是我的Excel快照 enter image description here

我编写了一个下面的代码,用于标识“A”列中的Integer值,它将插入一行。但问题是即使插入发生在空白处(例如:在行号4,8,9和14中)。 所以任何人都可以告诉我如何只在那些我有Integer的行中插入行。

Private Sub CommandButton3_Click()



 Dim UsedCell, MyRange, intCell
 Dim Cell_Text As String
 Dim Cell_Address As String


 UsedCell = Sheets("Sheet1").Cells(1, 1).SpecialCells(xlLastCell).Row
    Set MyRange = Range("A2:A" & UsedCell)

For Each intCell In MyRange
Cell_Text = intCell.Offset(0, 3).Text
Cell_Address = intCell.Offset(0, 3).Address
FoundRow = intCell.Row

  If Not InStr(1, intCell.value, ".") > 0 And InStr(1, intCell.value, ".") <> "" Then
 Range(Cell_Address).Select
Selection.EntireRow.Select

     Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove


 Else

End If

Next intCell

End Sub

2 个答案:

答案 0 :(得分:2)

对数值使用inStr有点复杂。另请注意,Excel会将空单元格解释为值0.尝试沿着以下几行:

If Int(intCell.Value) = intCell.Value And intCell.Value > 0 Then
    Debug.Print "insert"
End If

单词:如果单元格值的整数等于单元格值(即没有小数)且单元格大于零,则执行插入代码。

答案 1 :(得分:1)

要回答OP对@ Teylyn answer的问题,请参阅反向运行Loop的基本脚本。

此示例仅将单元格A1的Range设置为A10,然后以相反的顺序激活它们。

Option Explicit
Sub LoopingInReverse()

    Dim MyRng As Range
    Dim MyCellRef As Long

    Set MyRng = ThisWorkbook.Sheets(1).Range("A1:A10")

    For MyCellRef = MyRng.Cells.Count To 1 Step -1

        Cells(MyCellRef, "A").Activate

    Next MyCellRef

End Sub