Как исправить петли в шаблоне в формате Excel - PullRequest
0 голосов
/ 29 июня 2019

У меня есть рабочая книга для данных по зарплате, из которой мне нужно создать готовый шаблон платежного листа. Идентификатором при создании новой рабочей таблицы будет имя сотрудника. Шаблон создан, но у меня проблемы с отображением данных в цикле. он не возвращает нужные мне данные.

Я использую простой VBA, поскольку я пытался создать ведомость расчета вручную:

Set wsPay = .Sheets("Payroll")
Set wsTEMP = .Sheets("Template")

Range("F6").Select
ActiveCell.FormulaR1C1 = wsPay.Range("AI" & Rows.Count).End(xlDown).row + 1

Range("J6").Select
ActiveCell.FormulaR1C1 = wsPay.Range("E" & Rows.Count).End(xlDown).row + 1

Range("B7").Select
ActiveCell.FormulaR1C1 = wsPay.Range("C" & Rows.Count).End(xlDown).row + 1

Range("H7").Select
ActiveCell.FormulaR1C1 = wsPay.Range("AJ" & Rows.Count).End(xlDown).row + 1

Range("K7").Select
ActiveCell.FormulaR1C1 = wsPay.Range("H" & Rows.Count).End(xlDown).row + 1

Range("B8").Select
ActiveCell.FormulaR1C1 = wsPay.Range("I" & Rows.Count).End(xlDown).row + 1

Range("H8").Select
ActiveCell.FormulaR1C1 = wsPay.Range("AK" & Rows.Count).End(xlDown).row + 1

Range("K8").Select
ActiveCell.FormulaR1C1 = wsPay.Range("F" & Rows.Count).End(xlDown).row + 1

в цикле, тогда как формула, необходимая для возврата соответствующих данных ячейки в этом диапазоне столбцов, не захватывает.

1 Ответ

0 голосов
/ 30 июня 2019

Непонятно, что вы делаете, но вот некоторые комментарии к вашему коду, которые, возможно, вы используете, чтобы выяснить проблему.

Есть много улучшений, которые, вероятно, могут быть сделаны с этими утверждениями:

Range("J6").Select
ActiveCell.FormulaR1C1 = wsPay.Range("E" & Rows.Count).End(xlDown).row + 1
  • Вам не нужно использовать Select ( см. Эту статью ). Вы можете быть более кратким, набрав Range("J6").FormularR1C1 =
  • Вы устанавливаете значение как число. Конкретно ряд плюс 1. Это намеренно? Вероятно, лучше использовать Range("J6").Value2. Предполагая, что вы не хотите каких-либо вычислений или чего-либо еще в ячейке, FormulaR1C1 будет технически работать в этом случае, но на самом деле это не лучший подход.
  • Вы делаете что-то не так с wsPage.Range. Если вы на 2007 или выше, это ВСЕГДА возвратит 1 048 577. Вы устанавливаете его на нижнюю ячейку в столбце E (общее количество строк в ячейке), но затем используете End(xlDown), который ничего не будет делать, поскольку вы уже находитесь в нижней части листа. Или используйте xlUp или начните где-нибудь повыше ... e1?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...