2015-04-26 3 views
1

Я только начал использовать VBA. Просто хотел знать, как заполнить колонку, начиная с диапазон («K5») и значение, полученное от ComboBox1. Например: Если диапазон («K5») = 22, то диапазон («K6») = 23 ... Конечное число - это значение ComboBox2.Auto Fill Column

Это мой код теперь ...

Dim temperature_1 As Integer      'from temperature_1 
Dim temperature_2 As Integer      'to temperature_2 
Dim k As Integer 
Dim l As Integer 
Dim range_degrees As Integer      


temperature_1 = Sheet1.ComboBox1 
temperature_2 = Sheet1.ComboBox2 
range_degrees = temperature_2 - temperature_1 

For k = range("K5") To range_degrees      
    For l = temperature_1 To temperature_2      
    ...... 
    Next l 
Next k  
+0

Пожалуйста, добавьте более подробную информацию для вашего оператора 'range (" K5 ") = 22, затем диапазон (" K6 ") = 23'. Каковы «правила» для изменения значений? Почему 22-> 23 и почему K5-> K6? – nhee

+0

Это только, к примеру. Он может начинаться с любой ячейки и любого числа. В моем проекте он находился в начале диапазона («K5»). Значение в ComboBox1 было 22. Но когда я изменяю значения в ComboBox1 или ComboBox2, мне нужно автоматически изменять значения в ячейках. –

+0

И шаг 1. –

ответ

0
Private Sub FillRange() 
    Dim temperature_1 As Integer      'from temperature_1 
    Dim temperature_2 As Integer      'to temperature_2 
    Dim k As Integer 
    Dim l As Integer 
    Dim range_degrees As Integer 


    temperature_1 = Sheet1.ComboBox1 
    temperature_2 = Sheet1.ComboBox2 
    range_degrees = temperature_2 - temperature_1 

    Range("K5").Select 

     For l = temperature_1 To temperature_2 
      ActiveCell.Value = l 
      ActiveCell.Offset(1, 0).Select 
     Next l 
End Sub 
+0

Спасибо! Оно работает! –

3

Если вы действительно хотите «Автозаполнение» в колонке, я бы просто заполнить начало диапазона и заполнить ряд.

with activesheet 
    .range("K5") = temperature_1 
    .range("K5").DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=temperature_2, Trend:=False 
end with 

Если вы хотите, чтобы увеличить в чем-то вроде 0,05 °, измените параметр Step:=1 до нужного прироста. Если вы хотите заполнить строку вместо столбца, измените значение Rowcol:=xlColumns на Rowcol:=xlRows. Блокировка значений, подобных этому, с серией намного эффективнее, чем прохождение через них.

+0

Мне это очень нравится, я несколько лет работаю с VBA, и это первый раз, когда я вижу '.DataSeries', очень чистый и элегантный. Благодаря! –

+0

Спасибо! Это то, что мне нужно. –