[英]VBA Excel - Last two cells in selected row
我有一个问题。 我需要将选定行中的最后两个单元格设置为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
要查找连续使用最右边的单元格,可以使用Range.End(xlToLeft)
因为findwindow在您的问题的注释中暗示了这一点。 End(<direction>)
功能的作用等同于在Excel中按End +键。 因此,如果您从要搜索的行的最右边的单元格执行此操作,它将为您提供最后一个单元格(除非使用了最右边的单元格)。 要在工作表中找到最右边的单元格,请执行ActiveSheet.Cells(Selection.Row, ActiveSheet.Columns.Count)
。
将所有这些放在一起,您的宏将如下所示:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.