繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM