Поменяйте местами две ячейки, используя Excel VBA - PullRequest
0 голосов
/ 02 октября 2019

Мне нужно поменять значения двух ячеек. Удерживая Shift Key, тогда метод «выбери и брось» здесь не работает. поэтому я решил создать макрос, в котором я могу получить адрес активной ячейки по

ActiveCell.Address

, но как я могу получить адрес ячейки, которую я скопировал до запуска этого макроса? Чтобы уточнить, это шаги для обмена значениями.

Копирование ячейки

Выбор другой ячейки на том же листе

Запуск макроса для обмена значениями (который будетсохранить значение activecell как строку и вставить скопированное значение ячейки)

1 Ответ

2 голосов
/ 02 октября 2019

Этот саб выполнит трюк:

Sub swapper()
Dim cellfirst As String, cellsecond As String
If Not Selection.Cells.Count = 2 Then
    MsgBox ("Please only select two cells")
        Else
        If Selection.Areas.Count > 1 Then
            cellfirst = Selection(1).Value
            cellsecond = Selection.Areas(2).Value
            Selection(1).Value = cellsecond
            Selection.Areas(2).Value = cellfirst
                Else
                cellfirst = Selection(1).Value
                cellsecond = Selection(2).Value
                Selection(1).Value = cellsecond
                Selection(2).Value = cellfirst
        End If
End If
End Sub

Он проверит, выбраны ли две ячейки, если не выдаст сообщение об ошибке. Затем он проверит, находятся ли клетки отдельно или близко друг к другу. Затем, основываясь на этом, сохраните значения обеих ячеек в строках, поменяйте местами строки и напечатайте обратно в ячейку.

Примечание. Выберите две разные ячейки, удерживая ctrl и щелкая обе ячейки.

Я понимаю, что это не 1 к 1, что вы просили, но зачем пытаться копировать что-то самостоятельно, если вы можете сделать так, чтобы макрос делал все для вас?

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