2016-03-14 3 views
0

Я пытаюсь придумать некоторый код vba, чтобы открыть окно ввода автоматически, как только рабочая книга будет открыта, и введите пользователю дату, а затем дату, указанную в ячейке A1. Я написал код ниже, но поле ввода не подтягивается, он просто открывает книгу и движется дальше. Не уверен, что происходит. Любая помощь приветствуется.Входная коробка на рабочей книге открыта

Спасибо!

Option Explicit 
Private Sub workbook_open() 
Dim cellvalue As Variant 
Dim ws As Worksheet 

Set ws = Worksheets("Workbench Report") 

ReShowInputBox: cellvalue = Application.InputBox("Please Enter Todays Date (dd/mm/yyyy)") 

If cellvalue = False Then Exit Sub 
If IsDate(cellvalue) And CDate(cellvalue) < Date Then 
ws.Range("A1").Value = DateValue(cellvalue) 
Else: MsgBox ("Invalid Date!") 
GoTo ReShowInputBox 
End If 

End Sub 

ответ

1

Ваш код запускается для открытия рабочей книги для меня. Попробуйте эти шаги.

  1. Откройте Excel и Save As, изменив расширение .XSLM
  2. Откройте редактор VBA (Alt + F11)
  3. В левом окне найдите файл макросъемки (тот, который вы только что созданный и названный - он находится в скобках после «VBA Project»), развернитесь до «This Workbook» и дважды щелкните по нему.
  4. Вставьте свой код в правое окно
  5. Сохраните файл и откройте его снова.

См. Прилагаемую схему.

Кстати, "cellValue = false", вероятно, должен быть cellValue = "", поскольку InputBox возвращает строку, а не логическое значение.

enter image description here

+0

Ahh ok! Отлично работает благодаря вам! –

1

Для событий Workbook_Open скрипт должен находиться в частном модуле (ThisWorkbook)

От Ozgrid:

событие Workbook_Open является процедура Workbook объекта и, как такой, процедура Workbook_Open ДОЛЖНА находиться в частном модуле объекта рабочей книги (ThisWorkbook).

Смежные вопросы