Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Формат даты неверен при процедуре Range.Find - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Формат даты неверен при процедуре Range.Find (Макросы/Sub)
Формат даты неверен при процедуре Range.Find
nurgaliev Дата: Вторник, 16.08.2016, 11:24 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем здравствуйте,

Существует таблица (она обширна и конфиденциальна), где по нажатию кнопки выходит InputBox, куда необходимо указать ячейку с датой (форматом "dd.mm.yyyy hh:mm:ss").

Далее, идет поиск значения этой ячейки с возвратом номера столбца. Здесь вылезает ошибка Error 91.

При смене формата даты на "dd.mm.yyyy" все работает, но даты в таблице не должны меняться.

Подскажите, как выправить код?

[vba]
Код

Dim per As String
Dim i, dd As String, df As String, li As Integer
Dim ddd As Date
Dim dff As Date

li = Range("B1:B10000").Find("Segment", , , xlWhole).Row

ddd = Application.InputBox(prompt:="What's the start of the period?", Type:=8)
dff = Application.InputBox(prompt:="What's the end of the period?", Type:=8)

dd = Range("P" & li - 1 & ": AZT" & li - 1).Find(CDate(ddd), , , xlWhole).Column ''''''ERROR 91
df = Range("P" & li - 1 & ": AZT" & li - 1).Find(CDate(dff), , , xlWhole).Column

Application.ScreenUpdating = False

per = Application.InputBox(prompt:="What's the name of the sheet you want to create?")
Sheets.Add.Name = per
[/vba]
 
Ответить
СообщениеВсем здравствуйте,

Существует таблица (она обширна и конфиденциальна), где по нажатию кнопки выходит InputBox, куда необходимо указать ячейку с датой (форматом "dd.mm.yyyy hh:mm:ss").

Далее, идет поиск значения этой ячейки с возвратом номера столбца. Здесь вылезает ошибка Error 91.

При смене формата даты на "dd.mm.yyyy" все работает, но даты в таблице не должны меняться.

Подскажите, как выправить код?

[vba]
Код

Dim per As String
Dim i, dd As String, df As String, li As Integer
Dim ddd As Date
Dim dff As Date

li = Range("B1:B10000").Find("Segment", , , xlWhole).Row

ddd = Application.InputBox(prompt:="What's the start of the period?", Type:=8)
dff = Application.InputBox(prompt:="What's the end of the period?", Type:=8)

dd = Range("P" & li - 1 & ": AZT" & li - 1).Find(CDate(ddd), , , xlWhole).Column ''''''ERROR 91
df = Range("P" & li - 1 & ": AZT" & li - 1).Find(CDate(dff), , , xlWhole).Column

Application.ScreenUpdating = False

per = Application.InputBox(prompt:="What's the name of the sheet you want to create?")
Sheets.Add.Name = per
[/vba]

Автор - nurgaliev
Дата добавления - 16.08.2016 в 11:24
nilem Дата: Вторник, 16.08.2016, 13:26 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Объявите dd As Long instead of String


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеОбъявите dd As Long instead of String

Автор - nilem
Дата добавления - 16.08.2016 в 13:26
Kuzmich Дата: Вторник, 16.08.2016, 16:12 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
И df тоже As Long
 
Ответить
СообщениеИ df тоже As Long

Автор - Kuzmich
Дата добавления - 16.08.2016 в 16:12
Zdx Дата: Среда, 17.08.2016, 01:49 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 4 ±
Замечаний: 0% ±

2010
Сначала надо определить объект оператором Set, только потом обращаться к его свойствам
[vba]
Код
Sub nn()

Dim per As String, rng As Range
Dim i, dd As String, df As String, li As Integer
'Dim ddd As Date
'Dim dff As Date
With ActiveSheet

Set rng = .Range("F:F").Find("Segment") '.Row
li = rng.Row
...

[/vba]


Неизлечимых болезней нет, есть неизлечимые люди.

Сообщение отредактировал Zdx - Среда, 17.08.2016, 01:50
 
Ответить
СообщениеСначала надо определить объект оператором Set, только потом обращаться к его свойствам
[vba]
Код
Sub nn()

Dim per As String, rng As Range
Dim i, dd As String, df As String, li As Integer
'Dim ddd As Date
'Dim dff As Date
With ActiveSheet

Set rng = .Range("F:F").Find("Segment") '.Row
li = rng.Row
...

[/vba]

Автор - Zdx
Дата добавления - 17.08.2016 в 01:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Формат даты неверен при процедуре Range.Find (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!