VBA Excel – 选定行中的最后两个单元格

我有一个问题。 我需要将选定行中的最后两个单元格设置为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 

任何帮助,将不胜感激。

谢谢

 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 

要在一行中find最右边使用的单元格,可以使用Range.End(xlToLeft)作为findwindow暗示在您的问题的评论。 End(<direction>)函数的function与在Excel中按End +键等价。 所以如果你从你正在search的那一行的最右边的单元格开始,它会给你最后一个单元格(除非使用最右边的单元格)。 要查找工作表中最右边的单元格,请执行ActiveSheet.Cells(Selection.Row, ActiveSheet.Columns.Count)

把所有这些放在一起,你的macros就像这样:

 Sub SetCellValueToZero() Dim last_used_cell As Range, r As Range For Each r In Selection.Rows Set last_used_cell = ActiveSheet.Cells(r.Row, ActiveSheet.Columns.Count).End(xlToLeft) last_used_cell = "0" last_used_cell.Offset(0, -1) = "0" Next r End Sub 
 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