Копирование диапазона ячеек Excel в следующее пустое место, возврат по требованию - PullRequest
0 голосов
/ 30 июня 2019

Моя общая идея заключается в том, чтобы иметь возможность перемещать данные (диапазон ячеек) в сторону (все еще доступны и видимы) для последующего вызова (несколько вычислений).
- Например: A1: E5 содержит данные (текст и цифры)) - перемещается макросом.
- Пример 2: A1: E17, как указано выше, для следующего доступного пространства.
- Пример 3: A1: E13, как указано выше, для следующего доступного пространства.
Я надеялся, что смогу вспомнитьконкретный диапазон данных в любой момент, я надеялся достичь своей цели с помощью следующего макроса:

 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Range.Address = "$U$4" Then
        Range(ActiveCell, ActiveCell.Offset(300, 5)).Select
$$$COPY PASTE CODE PART $$$
        Exit Sub
    End If
 End Sub

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

1 Ответ

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

Я верю, что это сделает то, что вы ищете.В электронной таблице (снимок экрана ниже) введите местоположение, в котором архив будет располагаться слева от данных (ячейка B4, B4).Введите данные сценария в ячейки C4, D4 и E4.Чтобы скопировать эти данные в архив K1, поместите курсор в B4 (где живет «K1») и запустите код Scenarios_Record ().

Если вы хотите получить сценарий, поместите курсор в ячейку,определяет, где живут данные (например, B4 или B5) и запускает Scenarios_Retreive ().

Sub Scenarios_Record()
' Copies scenario to the archive
Dim strTarget As String, intNbrCells As Integer
intNbrCells = 3
' Target cell
strTarget = ActiveCell.Value
Debug.Print strTarget
Debug.Print Range(strTarget).Value
For i = 1 To intNbrCells
    Range(strTarget).Offset(0, i - 1).Value = ActiveCell.Offset(0, i).Value
Next i
End Sub

Sub Scenarios_Retrieve()
' Copies scenario from the archive
Dim strTarget As String, intNbrCells As Integer
intNbrCells = 3
' Target cell
strTarget = ActiveCell.Value
Debug.Print strTarget
Debug.Print Range(strTarget).Value
For i = 1 To intNbrCells
    ActiveCell.Offset(0, i).Value = Range(strTarget).Offset(0, i - 1).Value
Next i
End Sub

Screen Shot of spreadsheet

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...