2016-03-29 2 views
0

поэтому у меня есть два диапазона, установленные в двух кодах. Моя проблема в том, что диапазон специфичен. Независимо от того, насколько я изменил его, я получаю сообщение об ошибке. Моя цель - установить диапазон от С1 до тех пор, пока данные не прекратятся (то же самое для столбца J). Диапазон варьируется в зависимости от того, какая электронная таблица у меня открыта, поэтому я хотел бы, чтобы она обнаружила конец данных и остановилась там. Каждая ячейка будет ВСЕГДА иметь данные, поэтому вам не нужно беспокоиться о пустых ячейках между ними.Установка правильного диапазона столбцов в VBA для 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

Смежные вопросы