#excel #vba
#excel #vba
Вопрос:
В данном случае я использую Range("a5")
для SUM
ячеек a1: a3. Как только СУММА будет завершена, я хочу запустить VBA, а затем вставить SUM
результат из sheet1
на sheet2
Если число вводится непосредственно, Range("a5")
все работает нормально.
Я работал с PasteSpecial
, на сегодняшний день у меня не было успеха с этим.
Я бы подумал, что value
или value2
достиг бы этой цели, но пока этого не произошло. У меня такое чувство, что я что-то упускаю из виду довольно просто.
Sub TransferSum()
Dim Rng As Range
Set Rng = Worksheets("Sheet1").Range("a5")
Rng.Copy
Worksheets("Sheet1").Paste Destination:=Worksheets("Sheet2").Range("a1")
Application.CutCopyMode = False
End Sub
Ответ №1:
Ваша формула ссылается на ячейки над ее местоположением, но выше A1 ячеек нет, отсюда и ошибка. Кроме того, ваш синтаксис был отключен.
Если вы просто хотите перенести значение…
Sub TransferSum()
Dim Rng As Range
Set Rng = Worksheets("Sheet1").Range("a5")
Rng.Copy
Worksheets("Sheet2").Range("a1").pastespecial xlvalues
'OR IN ONE LINE
Worksheets("Sheet2").Range("a1").value=rng.value 'or Value2
End Sub
Комментарии:
1. Отлично, я надеялся сохранить это в одной строке. Если у вас есть время, я не уверен, что вы подразумеваете под «Ваша формула ссылается на ячейки над ее местоположением, но нет ячеек выше A1» Означает ли это, что при текущей записи вставка будет выше A1? Я думал, что значение по умолчанию с прошлым всегда находится в таблице.
2. Ваша исходная формула была в A5, но ссылочные ячейки над ней (A1: A3). При перемещении в другое место относительные ссылки будут сохранены, но выше A1 ячеек нет. Вы можете проверить это самостоятельно вручную на формуле рабочего листа.