2016-10-17 4 views
0

У меня есть книга, в которой я надеюсь автоматически рассчитывать дату истечения срока действия при инициализации файла.Дата печать книги при открытии

Моя текущая логика в виду, заключается в следующем, но это дает мне «Неоднозначное Name» сообщение об ошибке:

Private Sub Workbook_Open() 

If Worksheet(1).Range("G30") Is Nothing Then 
Range("G30").Value = Now + 120 
On Error GoTo 0 

End Sub 

Учебное пособие предназначено для обновления по мере необходимости, поэтому нужно будет проверить, является ли отметка даты уже отмечена.

У кого-нибудь есть предложения в этом случае? Спасибо заранее!

ответ

1

что бы:

Private Sub Workbook_Open() 
    With Worksheets("General Profiling") 
     If IsEmpty(.Range("G30")) Then .Range("G30").Value = Now + 120 
    End With 
End Sub 

с:

  • Worksheet не является допустимым ссылка на объект

  • someRange нет ничего,

    работы для проверки, является ли Range тип d переменная someRange была назначено или не

    в то время как Worksheets(1).Range("G30") просто по умолчанию в Value свойства этого Range объекта, а затем вы должны проверить его против быть Empty или не

  • вашей ссылки 2-й диапазона (Range("G30").Value) ISN» t полностью

    тогда он будет ссылаться Range("G30") в в настоящее время активно лист, который не может быть тем, который вы хотите.

    With Worksheets(1) - End With с помощью блока и точки (.) перед всеми Range вызовов будет убедиться, что они ссылаются на тот же (и хотел) лист

+0

user3598756 @ Большое спасибо за ваше подробное объяснение, это очень полезно! К сожалению, когда я тестировал сценарий в своей книге, это не совсем то, на что я надеялся. Первоначально я думал, что это связано с ссылкой на формулу, которую я имел в этой ячейке, которая дала мне значение 0, однако после удаления формулы дата не была заполнена при открытии или изменении книги. Был бы я пропал без вести что-нибудь еще? – kitarika

+0

может быть листом, который вы хотите, не является первым в коллекции 'Worksheets', так что' Worksheets (1) 'не указывает на правильное: какое имя рабочего листа вам нужно, чтобы проверить содержимое ячейки« G30 » ? – user3598756

+0

Возможно также, что ячейка кажется пустой, но это не так. Если ссылка на рабочий лист верна, попробуйте сопоставить строку вместо этого, изменив строку на «Если .Range (« G30 ») =« »Затем .Range (« G30 »). Значение = теперь + 120' – Vegard

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