【问题标题】:Setting correct column range in VBA for excel在 VBA 中为 excel 设置正确的列范围
【发布时间】:2016-03-29 00:55:02
【问题描述】:

所以我在两个代码中设置了两个范围。我的问题是,范围是特定的。不管我改变了多少,我最终都会得到一个错误。我的目标是设置从 C1 一直到数据停止的范围(对于 J 列也是如此)。范围因我打开的电子表格而异,因此我希望它能够检测到数据的结尾并停在那里。每个单元格总是有数据,所以你不必担心中间的空单元格。

这是我的代码:

    Sub Condition()
        Set Rng = Range("C1:C1822")
        For Each cell In Rng

        If cell.Value <> "SB" Then
            cell.Offset(0, 8).Value = "Introduced by Assemblymember"
        Else
        cell.Offset(0, 8).Value = "Introduced by Senator"

        End If
        Next
    End Sub
'CORRECT LOWER CASE THEN UPPER CASE FIRST LETTER AND OFFSET TO NEW COLUMN

Sub Change()
    Dim Rng As Range
    Dim c As Range
    Set Rng = ActiveSheet.Range("J1:J1822")
    For Each c In Rng
        c.Offset(, 2).Value = LCase(c.Value)
    Next c

For Each cell In Application.ActiveSheet.UsedRange
    If (cell.Value <> "") Then
         cell.Value = UCase(Left(cell.Value, 1)) & Right(cell.Value, Len(cell.Value) - 1)

    End If
Next
End Sub

我的问题在于:

Sub Condition()
        Set Rng = Range("C1:C1822")
        For Each cell In Rng

后来又出现在:

Sub Change()
    Dim Rng As Range
    Dim c As Range
    Set Rng = ActiveSheet.Range("J1:J1822")
    For Each c In Rng
        c.Offset(, 2).Value = LCase(c.Value)
    Next c

For Each cell In Application.ActiveSheet.UsedRange
    If (cell.Value <> "") Then
         cell.Value = UCase(Left(cell.Value, 1)) & Right(cell.Value, Len(cell.Value) - 1)

    End If

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这样的东西会根据填​​充的行数进行调整:

    Dim sht as WorkSheet, Rng As Range
    
    Set sht = ActiveSheet   
    
    Set Rng = sht.Range(sht.Range("C1"), sht.Cells(sht.Rows.Count,"C").End(xlUp))
    

    【讨论】:

    • 非常感谢!您的建议非常有效。
    猜你喜欢
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多