2014-12-03 2 views
1

Есть ли способ увеличить значение автозаполнения на 10 вместо 1? На моем листе представлены следующие функции кода. Пользователь (геолог) определяет номер начальной станции в B1 и номер конечной станции в B2. Макрос запускается и начинается с C5, столбец заполняется номерами станций от начала до конечной станции. Однако данные нужно собирать только каждые 10 станций, и я не смог понять, как включить это в свой код. Вместо 1000, 1001, 1002 ... и т.д.., Я хотел бы 1000, 1010, 1020 ...Динамический диапазон Excel VBA AutoFill и приращение на 10

Sub StationFill() 

Dim taskStationEnd As Long 
Dim taskStationBegin As Long 

taskStationBegin = Range("B1").Value 
taskStationEnd = Range("B2").Value 

With Worksheets("Data") 
    .Columns(3).ClearContents 
    Set SourceRange = .Range("C5") 
    SourceRange.Value = taskStationBegin 
    Set fillRange = .Range(SourceRange, _ 
     Cells(SourceRange.Row + taskStationEnd - taskStationBegin, SourceRange.Column)) 
    SourceRange.AutoFill Destination:=fillRange, Type:=xlFillSeries 
End With 

End Sub 

(первый раз плакат. Не уверен, что правильно и получил разрывы строк кода в правой место)

ответ

1

Попробуйте это:

Sub marine() 
    Dim taskStationEnd As Long 
    Dim taskStationBegin As Long 
    Dim SourceRange As Range 

    Const interval As Long = 10 '<~~ this is your interval 

    With Sheets("Sheet1") '<~~ change to suit 
     taskStationBegin = .Range("B1").Value 
     taskStationEnd = .Range("B2").Value 
     Set SourceRange = .Range("C5") 
     SourceRange = taskStationBegin 
     SourceRange.Offset(1, 0) = taskStationBegin + interval 
     SourceRange.Resize(2).AutoFill _ 
      SourceRange.Resize(((taskStationEnd - taskStationBegin)/interval) + 1) _ 
      , xlFillSeries 
    End With 
End Sub 
+0

Спасибо! Это отлично поработало. Мне нужно больше думать о том, как Смещение и изменение размера SourceRange работают, чтобы полностью понять ваше решение, но я рад, что у меня есть что-то, что нужно разобрать и понять, а не то, что я собрал вместе. – AnnaNmty

+0

@AnnaNmty * Смещение * работает так, как будто вы нажимаете клавиши со стрелками. Итак, '.Offset (1, 0)' означает, что вы перемещаете строку целевой ячейки 1 из ссылки, которая является вашим * объектом Range *. Изменение размера похоже на нажатие клавиш со стрелками при удерживании * Shift *. '.Resize (2)' означает, что вы расширяете выделение до 2 строк. Я пропустил аргумент столбца, так как нет необходимости изменять размер столбцов. Если это наоборот, вы опускаете аргумент строки, подобный этому. .Resize (, 2) '. – L42

+0

У меня теперь есть аналогичная задача, только на этот раз автозаполнение строки вместо столбца. Основываясь на моем понимании вашего объяснения, я изменил смещение на '.Offset (0, 1)' и мой размер на '.Resize (, 2)'. Я получаю сообщение об ошибке «Метод автозаполнения класса Range не удался». Любая помощь с пониманием того, как исправить это, ценится. – AnnaNmty

0

Я попытался с Excel 2010 и есть значение приращения доступны (шаг).

Range("A1:A26").DataSeries Rowcol:=xlColumns, Type:=xlLinear, **Step:=10** 

Возможно, это вам поможет.

С уважением, Christof

+0

Мне не удалось выяснить, как сделать работу над моей задачей, но спасибо, что позволили мне знать, что она существует! У меня есть чтение и учеба. – AnnaNmty