Скопируйте и вставьте весь лист с помощью InputBox - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть этот код, и я пытаюсь выполнить простую задачу, которая, видимо, не так проста для меня.Я хочу сказать vba, какой лист копировать (здесь - функциональность InputBox, куда я вставляю имя листа), а затем, если существует (то есть, если имя правильное), выполнить вставку копии в лист20, если это не так.существует, перейдите к exitmysub.

Теперь у меня две проблемы:

1) Он не копирует пасту.Или, по крайней мере, не всегда.Иногда да, иногда нет.И я действительно не понимаю, почему (я всегда ставлю правильные имена листов)

2) Даже если имя правильное, код запускает msgbox («Неверное имя листа»).Хотя я хочу, чтобы это срабатывало, только если имя листа, которое я поставил, не существует.

Спасибо за помощь!

Option Explicit

Dim text As String, ws As Worksheet


Sub copyentiresheet()

text = InputBox("Write here the Local Deposit Sheet you want to update", "Update Local Deposit Monitoring")

On Error GoTo exitmysub
Sheet20.Cells.Clear
Set ws = Sheets(text)
    ws.Cells.Copy

Sheets20.Paste


exitmysub:
MsgBox ("Invalid Sheet Name")

End Sub

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Копировать весь лист

Основные

  • InputBox Справка VBA: если пользователь нажимает кнопку Отмена, функция возвращает строку нулевой длины ("").
  • Если CodeName листа неверен, код не будет компилироваться.Обработка ошибок не требуется.
  • Используйте оператор With, чтобы избежать объявления ненужных ссылок на объекты.
  • Обратитесь к книге, используя CodeName.Parent, чтобы не повредить себя.выбор между ActiveWorkbook, ThisWorkbook или книгой по имени.
  • Exit Sub до (между) обработчиков ошибок.

Код

Option Explicit

Sub CopyEntireSheet()

  Dim text As String

  text = InputBox("Write here the Local Deposit Sheet you want to update", _
      "Update Local Deposit Monitoring")

  If text = "" Then Exit Sub ' If the user clicks Cancel.

  Sheet20.Cells.Clear ' If sheet's code name is wrong, code won't compile.

  On Error GoTo SourceSheetErr

  With Sheet20.Parent.Worksheets(text)

    On Error GoTo RangeErr
    .Cells.Copy Sheet20.Cells

  End With

Exit Sub

SourceSheetErr:
  MsgBox "Invalid Source Sheet Name."
Exit Sub

RangeErr:
  MsgBox "(Copy) Range Error."

End Sub
0 голосов
/ 04 декабря 2018

Попробуйте это ...

Option Explicit

Dim text As String, ws As Worksheet

Sub copyentiresheet()

text = InputBox("Write here the Local Deposit Sheet you want to update", "Update Local Deposit Monitoring")

On Error GoTo ErrorMySub
Sheet20.Cells.Clear
Set ws = Sheets(text)
ws.Cells.Copy Sheet20.Range("A1")

ExitMySub:
Exit Sub

ErrorMySub:
MsgBox ("Invalid Sheet Name")

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