Я сделал это раньше. Вы можете просто создать новое исключение и захватить трассировку стека, не бросая его, а затем проверить трассировку стека. Как сказал другой ответ, это очень дорого - не делайте этого в трудном цикле.
Я сделал это раньше для утилиты регистрации в приложении, где производительность не имеет большого значения ( Производительность редко имеет значение вообще, на самом деле - пока вы показываете результат на такое действие, например, быстро нажимаете кнопку).
До того, как вы смогли получить трассировку стека, исключения имели только .printStackTrace (), поэтому мне пришлось перенаправить System.out на поток моего собственного творения, затем (новый Exception ()). printStackTrace ( ); Перенаправить System.out назад и проанализировать поток. Интересный материал.
Попробуйте это. Я бы использовал range1
или что-то отличное от range
для имени переменной. Также прочитайте , как избежать выбора . Вам, вероятно, придется проверить размер диапазонов, range1 должен быть одной ячейкой или иметь тот же размер, что и rangerc.
Sub main()
Dim rangeSrc As range, range1 As range
Set rangeSrc = Application.InputBox("Select src Range", "select src range", Type:=8) 'type 8 = range
Set range1 = Application.InputBox("select des range", "select des range", Type:=8)
If Not rangeSrc Is Nothing And Not range1 Is Nothing Then
rangeSrc.Copy range1
End If
End Sub