2016-03-29 47 views
0

所以我有两个范围设置在两个代码。我的问题是,范围是特定的。不管我改变多少,我最终都会得到一个错误。我的目标是将C1的范围设置为一直到数据停止为止(对于J列相同)。范围取决于我打开哪个电子表格,因此我希望它能检测到数据的结束并停在那里。每个单元总是有数据,所以你不必担心它们之间的空单元。在Excel中设置正确的列范围为Excel

这里是我的代码:

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 

回答

0

像这样将调整到人口数:

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)) 
+0

非常感谢!你的建议完美运作。 – marcizoub