Вопрос:
У меня есть макрос, который должен работать на SHEET1. то у меня есть еще один лист (SHEET2), где он содержит кнопку, чтобы пользователь мог щелкнуть, чтобы иметь возможность запускать макрос. Мой вопрос в том, что я назначил макрос в моей кнопке, но ничего не происходит. Я попытался добавить эту строку Sheet1.Range(«A2:A» & lastrow) но макрос останавливается и полностью завершает задачи. Что-то не так с моим кодом? Пожалуйста помоги.
Sub DC1() Dim lastrow&, rng1 As Range, rng2 As Range lastrow = Cells(Rows.Count, 1).End(xlUp).Row Set rng1 = Range(«A2:A» & lastrow).SpecialCells(xlCellTypeConstants) Set rng2 = rng1.Offset(0, 6) rng2.Value = «=AVERAGE(RC[-6]:RC[-2])» Set rng2 = rng1.Offset(0, 7) rng2.Value = «=SUM(RC[-5]:RC[-1])*0.5» Set rng2 = rng1.Offset(0, 9) rng2.Value = «=CONCATENATE(RC[-9],RC[-8],RC[-7],RC[-6],RC[-5],RC[-4])» End Sub Лучший ответ:
Две вещи:
- Квалифицируйте свои листы. Поскольку макрос вызывается из кнопки в Sheet2, диапазоны создаются из этого листа вместо Sheet1.
- Используйте .FormulaR1C1 вместо .Value если вы собираетесь использовать R1C1 обозначения R1C1.
Здесь фиксированная версия вашего кода.
Sub DC1() Dim WS1 As Worksheet Dim LastRow As Long, Rng1 As Range, Rng2 As Range Set WS1 = ThisWorkbook.Sheets(«Sheet1») With WS1 LastRow = .Range(«A» & .Rows.Count).End(xlUp).Row Set Rng1 = .Range(«A2:A» & LastRow).SpecialCells(xlCellTypeConstants) Set Rng2 = Rng1.Offset(0,6) Rng2.FormulaR1C1 = «=AVERAGE(RC[-6]:RC[-2])» ‘ … Other code. End With End Sub
Сообщите нам, если это поможет.