VBA Excel - 所选行中的最后两个单元格

时间:2015-11-30 22:29:56

标签: excel vba excel-vba

我有点问题。我需要将所选行中的最后两个单元格设置为0。 我在VBA中很新,不知道用什么来实现这一目标。

这是我到目前为止所做的工作,只是值是硬编码的(对于单元格而言)。

Sub SetCellValueToZero()
    Dim r As Range

    For Each r In Selection.Rows
        Cells(r.Row, 3) = "0"
        Cells(r.Row, 2) = "0"
    Next r
End Sub

任何帮助都将不胜感激。

THX

3 个答案:

答案 0 :(得分:3)

Sub SetCellValueToZero()
Dim r As Range
Dim lastCol as Long
For Each r In Selection.Rows
    lastCol = ActiveSheet.Cells(r.row, ActiveSheet.Columns.Count).End(xlToLeft).Column
    Cells(r.Row, lastCol-1) = "0"
    Cells(r.Row, lastCol) = "0"
Next r
End Sub

答案 1 :(得分:1)

要查找连续最右边使用的单元格,可以使用ubyte[] __iter__() { yield mime; yield data; yield header.serialize(); //header.serialize returns a ubyte[] } ,因为findwindow会在您的问题的评论中暗示。 End(<direction>)-function的作用相当于在Excel中按End +键。因此,如果您从正在搜索的行的最右边的单元格中执行此操作,它将为您提供最后一个单元格(除非使用最右侧的单元格)。要查找工作表中最右边的单元格,请执行Range.End(xlToLeft)

将所有这些放在一起,你的宏看起来像这样:

ActiveSheet.Cells(Selection.Row, ActiveSheet.Columns.Count)

答案 2 :(得分:0)

Function getLastColumn(ByVal inputRng As Range) As Single
Dim nColumn As Single
    nColumn = 1
    On Error Resume Next
    nColumn = inputRng.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

    getLastColumn = nRow
End Function

last2Row = getLastColumn - 1