Вы можете создавать свои собственные процедуры, чтобы делать все, что вы можете себе представить. Вы можете значительно упростить код.
Во-первых, мы определим источник листа и назначения листа. Мы делаем это, чтобы сделать наш код легче читать, интерпретировать и поддерживать (теперь будет только одно место, где нужно возиться с этой грязной конкатенации:. Worksheets(stockcode & "_Stock ratio_" & marketcode)
Dim srcSheet as Worksheet
Dim destSheet as Worksheet
Set srcSheet = Worksheets(stockcode & "_IS_" & marketcode)
Set destSheet = Worksheets(stockcode & "_Stock ratio_" & marketcode)
Теперь мы можем просто использовать Value
назначение заявление, так как вы только обеспокоены вставив значения, вы можете просто сделать это:
destSheet.Range("D3").Value = srcSheet.Range("B2").Value
destSheet.Range("D4").Value = srcSheet.Range("B3").Value
destSheet.Range("D5").Value = srcSheet.Range("B15").Value
Это полностью избегает Copy
и Paste/PasteSpecial
методы, и должны быть быстрее, слишком
.
Вы можете создать макрос, который ставит все это вместе и становится немного более интересным, это в конечном счете зависит от вашего варианта использования и того, как вы хотите вводить данные, или это даже необходимо (часто это не так, поскольку существуют логические правила которые определяют отношения между листами, которые могут быть построены в кодовому/синтаксис и т.д.)
Если вы хотите просто ввести информацию, вы можете использовать Application.InputBox
, вот простой пример:
Sub TransferValues()
Dim src as Range
Dim dest as Range
Set src = Application.InputBox("Source?", Type:=8)
Set dest = Application.InputBox("Destination?", Type:=8)
dest.Value = src.Value
End Sub
Конечно, это не намного быстрее (если есть), чем копирование/вставка вручную, но это служит для иллюстрации концепции, которую вы можете реализовать нт.