Скопируйте данные из другого листа в Excel - PullRequest
1 голос
/ 12 марта 2012

Я новичок в VBA. Я написал этот код внутри события нажатия кнопки на листе под названием «Выходы». Проблема заключается в том, что при попытке скопировать данные формы TestInput лист в Калькулятор лист Я получаю ошибку времени выполнения 1004.
Мой код показан ниже

 Do While currentInd < lastRows
   With Worksheets("TestInput")
    Worksheets("Calculator").Range(Cells(3, "C"), Cells(3, (lastColumns))).Value = .Range(.Cells(currentInd, "A"), .Cells(currentInd, lastColumns)).Value

  End With

Если я заменим 3-ю строку моего кода рабочими таблицами («Калькулятор»). Диапазон («C3: FC3»). Значение = .Range (.Cells (currentInd, «A»), .Cells (currentInd, lastColumns) ) .Value

затем работает нормально, но lastColumns - это переменная, которая может измениться, поэтому я не хочу устанавливать диапазон в "C3: FC3"

1 Ответ

2 голосов
/ 12 марта 2012

Если «Калькулятор» не является текущим активным листом, вам необходимо полностью указать расположение ячеек:

With Worksheets("TestInput")
    Worksheets("Calculator").Range(Worksheets("Calculator").Cells(3, "C"), Worksheets("Calculator").Cells(3, lastColumns)).Value = .Range(.Cells(currentInd, "A"), .Cells(currentInd, lastColumns)).Value
End With

Или сделать его немного более читабельным:

Dim shCalc as WorkSheet
Set shCalc = Worksheets("Calculator")
With Worksheets("TestInput")
    shCalc.Range(shCalc.Cells(3, "C"), shCalc.Cells(3, lastColumns)).Value = .Range(.Cells(currentInd, "A"), .Cells(currentInd, lastColumns)).Value
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...