Страницы: 1
RSS
При работе с Inputbox ошибка: Run-time error `1004`: Method 'Range' of object '_Global' failed
 
Всем доброго дня! Я начинающий в Excel VBA.  У меня возник такая проблема которую не могу решат. Буду рад если поможете.

Я хочу что бы когда я ввожу температуру в Inputbox, столбцы G и H в Excel показывали даты (в формате day&month&year), когда температура была измерена выше введенной мной температуры, и температура для этого дня, соответственно.
 
Добрый день!
Опишите задачу, которую нужно решить, прикрепите небольшой файл-пример к первому сообщению. И не пишите через строку.
 
Это понятно. В будущем учту ваши комментарии.

Я загрузил файл. Я хочу что бы когда я ввожу температуру в Inputbox, столбцы G и H в Excel показывали даты (в формате day&month&year), когда температура была измерена выше введенной мной температуры, и температура для этого дня, соответственно.
 
Xalid Zalov, Вы внимательно читаете то, что Вам пишут?

Цитата
Юрий М написал:
прикрепите небольшой файл-пример к первому сообщению.
К первому, а не в новоом сообщении. Там же (в первом сообьщении) отредактируйте тест, добавив описание задачи.

Цитата
Xalid Zalov написал:
В будущем учту ваши комментарии.
Это не комментарии - это замечния. И устраните их сейас, а не потом.
 
Код
c As Integer, i As Integer
плохая идея при работе со строками. Если строк будет более 32767, то код выдаст ошибку. Лучше сразу As Long.
Но в Вашем конкретном случае все проще(даже файл-то по сути не нужен) - нет строки с именем "G" или "H". Второе - Range так в принципе нельзя использовать - либо полностью адрес, либо отсылки к ячейкам. Либо использовать Cells. Т.е. вместо этого:
Код
Range("G", c + 1) = Selection.Cells(i, 3) & "." & Selection.Cells(i, 2) & "." & Selection.Cells(i, 1)
пишете так:
Код
Range("G" & c + 1) = Selection.Cells(i, 3) & "." & Selection.Cells(i, 2) & "." & Selection.Cells(i, 1)
или так
Код
Cells(c + 1, "G") = Selection.Cells(i, 3) & "." & Selection.Cells(i, 2) & "." & Selection.Cells(i, 1)
Изменено: Дмитрий(The_Prist) Щербаков - 02.01.2021 16:25:51
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Xalid Zalov написал:
такая проблема
Код
HT = InputBox("Input temperature:")

"HТ" у вас, это не число, а текст, и он всегда будет отличаться от числа.
"InputBox" должен быть в самом начале макроса, чтобы вы не выполняли ненужные действия, когда не введите температуру => "Cancel" или пустой текст.
"HT" должен быть типом "вариант" ( "As Variant" - желательно).
После ввода "HT" проверьте, является ли это числом, и преобразуйте его в тип "Double" (CDbl).
В случае успеха у вас есть число для сравнения в цикле, в противном случае вы должны обработать ошибку.

Заголовки "Дата" и "Температура" введите вне цикла.

Вместо:
Код
= Selection.Cells(i, 3) & "." & Selection.Cells(i, 2) & "." & Selection.Cells(i, 1)
напишите:
Код
DateSerial(Cells(i, "A").Value, Cells(i, "B").Value, Cells(i, "C").Value)
и отформатируйте диапазон дат соответствующим образом:
Код
.NumberFormat = "dd/mm/yyyy"

Не используйте слово "Reset" в названиях процедур, функций и переменных, констант - это внутреннее имя vba:

"Reset Statement - Closes all disk files opened using the Open statement"
Изменено: ocet p - 02.01.2021 21:09:05
 
Дмитрий(The_Prist) Щербаков, ocet p, добрые люди, спасибо. Мне удалось выполнить это задание и узнать у вас дополнительную информацию! Я вам бесконечно благодарен.

Юрий М, и вам спасибо за ваше гостеприимство.
Страницы: 1
Наверх