2016-03-29 18 views
0

2つのコードに2つの範囲が設定されています。私の問題は、範囲が特定です。どれだけ私がそれを変更したとしても、私はエラーを得ることになります。私の目標は、C1からデータが停止するまでの範囲を設定することです(列Jと同じ)。範囲は、開いているスプレッドシートによって異なりますので、データの終わりを検出して停止してください。各セルには常にデータがあるため、間に空のセルがないか心配する必要はありません。ここでExcel用のVBAで正しい列範囲を設定する

は私のコードです:

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

関連する問題