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