Кнопка команды для перемещения значения ячейки в другую ячейку без ошибки ячейки =#ССЫЛКА

Всем привет!

Я работаю над проектом Excel 2007 для своей работы. Я пытаюсь создать командную кнопку для перемещения одной ячейки в другую ячейку.

Private Sub CommandButton1_Click()
  ActiveSheet.Unprotect Password:="123"
  Select Case MsgBox(Buttons:=vbYesNo + vbQuestion, Prompt:="Are you sure? ")
    Case vbYes
      Range("A2").Cut Range("B2")
    Case vbNo
  End Select
  ActiveSheet.Protect Password:="123"
  ActiveSheet.EnableSelection = xlUnlockedCells
End Sub

Это мой текущий код VBA для вырезания и вставки из одной ячейки в другую.

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

screenshot

Это стандартный вид моего проекта. В ячейке A2 есть СУММА диапазона A4: A8, а ячейка D2 = A2, E2 = B2.

Проблема после нажатия на кнопку:

screenshot

Как видите, D2 должно быть =A2, теперь изменено на =B2 & E2 должно быть =B2, но теперь =#REF! ошибка.

Я не смог найти решение этой проблемы, поэтому, пожалуйста, помогите мне решить эту проблему.

Это нормальное (ожидаемое) поведение Excel. Вместо Range("A2").Cut Range("B2") попробуйте Range("B2").Value = Range("A2").Value: Range("A2").ClearContents.

VBasic2008 23.04.2022 12:45

Большое спасибо. Теперь все работает нормально. :)

Deuk Roy 23.04.2022 13:13
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
2
40
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если вы хотите сохранить формулу SUM в B2, а не только значение, вы можете использовать это вместо этого:

Range("A2").Copy Range("B2")
Range("A2").ClearContents

Также обновите формулу, чтобы использовать $

=SUM($A$4:$A$8)

Это код VBA для 2 командных кнопок:

  • Я сделал вторую кнопку для сброса 1-й команды

.

Private Sub CommandButton1_Click()
  ActiveSheet.Unprotect Password:="123"
  Select Case MsgBox(Buttons:=vbYesNo + vbQuestion, Prompt:="Are you sure? ")
    Case vbYes
    ActiveSheet.Unprotect Password:="123"
        Range("A2").Copy Range("B2")
        ActiveSheet.Unprotect Password:="123"
        Range("A2").ClearContents
    Case vbNo
  End Select
  ActiveSheet.Protect Password:="123"
  ActiveSheet.EnableSelection = xlUnlockedCells
End Sub

Private Sub CommandButton2_Click()
  ActiveSheet.Unprotect Password:="123"
  Select Case MsgBox(Buttons:=vbYesNo + vbQuestion, Prompt:="Are you sure? ")
    Case vbYes
    ActiveSheet.Unprotect Password:="123"
        Range("B2").ClearContents
        ActiveSheet.Unprotect Password:="123"
        Range("A2").Value = Application.Sum(Range("$AV$45,$AX$45,$AZ$45"))
    Case vbNo
  End Select
  ActiveSheet.Protect Password:="123"
  ActiveSheet.EnableSelection = xlUnlockedCells
End Sub

Спасибо всем за помощь. Если я что-то пропустил в этом коде, дайте мне знать. спасибо

Другие вопросы по теме