2016-03-29 4 views
0

so habe ich zwei Bereiche in zwei Codes eingestellt. Mein Problem ist, dass der Bereich spezifisch ist. Egal, wie sehr ich es geändert habe, bekomme ich einen Fehler. Mein Ziel ist es, den Bereich von C1 bis zum Ende der Daten (gleich für Spalte J) zu setzen. Der Bereich hängt davon ab, welche Tabelle ich geöffnet habe, also möchte ich, dass das Ende der Daten erkannt wird und dort stehen bleibt. Jede Zelle hat IMMER Daten, so dass Sie sich keine Gedanken über leere Zellen dazwischen machen müssen.Einstellung der korrekten Spaltenbereich in VBA für Excel

ist hier mein Code:

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 

Mein Problem am Anfang verlässt sich auf:

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

und später zeigt sich wieder:

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 

Antwort

0

So etwas wird anpassen zur Anzahl der bestückten Zeilen:

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

Vielen Dank! Dein Vorschlag hat perfekt funktioniert. – marcizoub

Verwandte Themen