Доброго времени! Нужна помощь по форме ввода данных. Что у нас имеется; я сделал простенькую таблицу в которой вычисляются некоторые значении при вводе определённых данных. Т.е. вводим два параметра в таблице и остальные параметры подсчитываются по ним. Хочу сделать ввод этих двух данных в виде диалога. Т.е. при открытии файла сразу появляется диалоговое окно и просит ввести сначала одно значение, потом жмём "ОК", далее просит ввести второе значение, далее жмём "ОК" и появляется таблица с уже заполнеными остальными значениями.
Получается что эти два вносимых значения должны с формы ввода направляться именно в определённые ячейки. Так же, эта таблица заполняется один раз каждый день, т.е. при ежедневном открытии данные с формы ввода направлялись в соответствующую реальной дате ячейку.
Очень жду вашей помощи и советов!
я создал некоторый пример диалога с пользователем, без ввода данных. Как вывести данные из формы в определённую ячейку-не могу разобраться. На орфографию внимание не обращайте, важна суть. в этом коде при октрытии книги сразу же появляется диалоговое окно и просит ввести имя, после ввода имени появляется окно приветствия. Вот нужно чтобы просило ввести не имя, а число и после нажатия на "ОК" это число автоматически переносилось в определённую ячейку и открывалось следующее похожее диалоговое окно и просило ввести следующее число и так же после нажатия на "ОК" число переносилось в другую определённую ячейку. после этого таблица подсчитываю все значения. Хочу разобраться и научиться как это делается Саму таблицу прикрепить сюда не могу, т.к. она на рабочем компьютере и доступа к выводу данных у меня нет ( могу только править). В целом это простенькая таблица: Столбцы-определённые параметры, строки- соответствуют каждому дню по датам и заполняются ежедневно. Заполняется только два значения остальные подсчитываются автоматически по простеньким формулам. Сама таблица очень простая, но хочется сделать работу с ней более интересней, чтобы данные вносить не в сами ячейки, а в окно диалога с небольшим описанием действий (например, внесите такое то значение которое надо посмотреть там то и т.д.)
[vba]
Код
Private Sub Workbook_Open()
Dim UserName As String Dim FirstSpace As Integer Do Until UserName <> "" UserName = InputBox("??????? ??? ? ???????: ", _ "Это форма учёта реагента. Для начала работы введите ваше имя") Loop FirstSpace = InStr(UserName, " ") If FirstSpace <> 0 Then UserName = Left(UserName, FirstSpace - 1) End If MsgBox "Привет! " & UserName & "Необходимо внести значение делений на насосе и тонны за сутки"
End Sub
[/vba]
Доброго времени! Нужна помощь по форме ввода данных. Что у нас имеется; я сделал простенькую таблицу в которой вычисляются некоторые значении при вводе определённых данных. Т.е. вводим два параметра в таблице и остальные параметры подсчитываются по ним. Хочу сделать ввод этих двух данных в виде диалога. Т.е. при открытии файла сразу появляется диалоговое окно и просит ввести сначала одно значение, потом жмём "ОК", далее просит ввести второе значение, далее жмём "ОК" и появляется таблица с уже заполнеными остальными значениями.
Получается что эти два вносимых значения должны с формы ввода направляться именно в определённые ячейки. Так же, эта таблица заполняется один раз каждый день, т.е. при ежедневном открытии данные с формы ввода направлялись в соответствующую реальной дате ячейку.
Очень жду вашей помощи и советов!
я создал некоторый пример диалога с пользователем, без ввода данных. Как вывести данные из формы в определённую ячейку-не могу разобраться. На орфографию внимание не обращайте, важна суть. в этом коде при октрытии книги сразу же появляется диалоговое окно и просит ввести имя, после ввода имени появляется окно приветствия. Вот нужно чтобы просило ввести не имя, а число и после нажатия на "ОК" это число автоматически переносилось в определённую ячейку и открывалось следующее похожее диалоговое окно и просило ввести следующее число и так же после нажатия на "ОК" число переносилось в другую определённую ячейку. после этого таблица подсчитываю все значения. Хочу разобраться и научиться как это делается Саму таблицу прикрепить сюда не могу, т.к. она на рабочем компьютере и доступа к выводу данных у меня нет ( могу только править). В целом это простенькая таблица: Столбцы-определённые параметры, строки- соответствуют каждому дню по датам и заполняются ежедневно. Заполняется только два значения остальные подсчитываются автоматически по простеньким формулам. Сама таблица очень простая, но хочется сделать работу с ней более интересней, чтобы данные вносить не в сами ячейки, а в окно диалога с небольшим описанием действий (например, внесите такое то значение которое надо посмотреть там то и т.д.)
[vba]
Код
Private Sub Workbook_Open()
Dim UserName As String Dim FirstSpace As Integer Do Until UserName <> "" UserName = InputBox("??????? ??? ? ???????: ", _ "Это форма учёта реагента. Для начала работы введите ваше имя") Loop FirstSpace = InStr(UserName, " ") If FirstSpace <> 0 Then UserName = Left(UserName, FirstSpace - 1) End If MsgBox "Привет! " & UserName & "Необходимо внести значение делений на насосе и тонны за сутки"
Без файла очень неудобно. Примерно так можно [vba]
Код
Private Sub Workbook_Open() Application.ScreenUpdating = 0 Application.Calculation = 3 r0_ = 2 nc_ = Cells(r0_, Columns.Count).End(1).Column - 1 ar = Cells(r0_, 2).Resize(, nc_).Value For i = 2 To nc_ If ar(1, i) = Date Then c_ = i + 1 End If Next i If c_ = 0 Then MsgBox "В строке 2 нет текущей даты. Заполняйте сами как хотите." Exit Sub End If Do Until z_ <> "" z_ = InputBox("Введите параметр 1", "Здрасьти") Loop r_ = 3 Cells(r_, c_) = z_ Do Until z1_ <> "" z1_ = InputBox("Введите параметр 2", "И снова здрасьти") Loop r_ = 4 Cells(r_, c_) = z1_ Application.Calculation = 1 Application.ScreenUpdating = 1 End Sub
[/vba]
Без файла очень неудобно. Примерно так можно [vba]
Код
Private Sub Workbook_Open() Application.ScreenUpdating = 0 Application.Calculation = 3 r0_ = 2 nc_ = Cells(r0_, Columns.Count).End(1).Column - 1 ar = Cells(r0_, 2).Resize(, nc_).Value For i = 2 To nc_ If ar(1, i) = Date Then c_ = i + 1 End If Next i If c_ = 0 Then MsgBox "В строке 2 нет текущей даты. Заполняйте сами как хотите." Exit Sub End If Do Until z_ <> "" z_ = InputBox("Введите параметр 1", "Здрасьти") Loop r_ = 3 Cells(r_, c_) = z_ Do Until z1_ <> "" z1_ = InputBox("Введите параметр 2", "И снова здрасьти") Loop r_ = 4 Cells(r_, c_) = z1_ Application.Calculation = 1 Application.ScreenUpdating = 1 End Sub
Здравствуйте. Немного поменял ваш файл. У меня вообщем выглядит примерно так. Но почему то теперь выдаёт что "в строке 2 нет текущей даты"- то что вы запрограммировали. Можно уточнить как это работает и от чего?
По самому макросу- спасибо!- это примерно то что я хотел. В идеале надо чтобы не набирать значение в окне, а чтобы оно уже было прикреплено к кнопке; т.е. будет четыре кнопки. кнопка 1- это значение 1, кнопка 2-это значение 2, кнопка 3 -это значение 4, и четвёртая кнопка это "другое"- в этом случае уже нужный параметр набирается вводом в окне формы. Для создания таких кнопок функцию InputBox надо как то переписывать?
Вот только как теперь отладить чтобы работало после моей корректировки? И так не разобрался где в коде указывается конкретная ячейка куда вставляется значение набранное в форме? Например, если необходимая ячейка будет находится не в начале таблицы, а скажем где то в середине.
Здравствуйте. Немного поменял ваш файл. У меня вообщем выглядит примерно так. Но почему то теперь выдаёт что "в строке 2 нет текущей даты"- то что вы запрограммировали. Можно уточнить как это работает и от чего?
По самому макросу- спасибо!- это примерно то что я хотел. В идеале надо чтобы не набирать значение в окне, а чтобы оно уже было прикреплено к кнопке; т.е. будет четыре кнопки. кнопка 1- это значение 1, кнопка 2-это значение 2, кнопка 3 -это значение 4, и четвёртая кнопка это "другое"- в этом случае уже нужный параметр набирается вводом в окне формы. Для создания таких кнопок функцию InputBox надо как то переписывать?
Вот только как теперь отладить чтобы работало после моей корректировки? И так не разобрался где в коде указывается конкретная ячейка куда вставляется значение набранное в форме? Например, если необходимая ячейка будет находится не в начале таблицы, а скажем где то в середине.Marr
Все просто - я сделал даты и параметры наоборот, по столбцам и строкам. Невнимательно прочитал Ваш первый пост. Вот именно поэтому и нужно прикладывать файл
Если у Вас вставляются константы 1,2 или 4, то InputBox-то Вам зачем? Вам нужно только определить строку с текущей датой. Для 1 сделал Вам кнопку (если правильно понял про 4 кнопки)
Номер столбца - сделал комменты к макросу в файле
Все просто - я сделал даты и параметры наоборот, по столбцам и строкам. Невнимательно прочитал Ваш первый пост. Вот именно поэтому и нужно прикладывать файл
Если у Вас вставляются константы 1,2 или 4, то InputBox-то Вам зачем? Вам нужно только определить строку с текущей датой. Для 1 сделал Вам кнопку (если правильно понял про 4 кнопки)
Номер столбца - сделал комменты к макросу в файле_Boroda_
_Boroda_, Немного не то) Ваш первый пример был как раз как надо. Необходимо чтобы при открытии книги появилось окно с 4 кнопками. Значения 1,2,4 это не константы. Это наиболее часто используемые значения параметра ( из них вносится какой то один), поэтому нужны для них кнопки. Т.е если надо внести значение "1" то нажимается кнопка "1" , если 2 то 2, если 4 то кнопка "3", если значение другое (7, 8, 9 и т.д.) то нажимаем четвёртую кнопку " другое" и переходим в следующее окно где уже вбиваем нужное значение.
_Boroda_, Немного не то) Ваш первый пример был как раз как надо. Необходимо чтобы при открытии книги появилось окно с 4 кнопками. Значения 1,2,4 это не константы. Это наиболее часто используемые значения параметра ( из них вносится какой то один), поэтому нужны для них кнопки. Т.е если надо внести значение "1" то нажимается кнопка "1" , если 2 то 2, если 4 то кнопка "3", если значение другое (7, 8, 9 и т.д.) то нажимаем четвёртую кнопку " другое" и переходим в следующее окно где уже вбиваем нужное значение.Marr
Тогда делаете форму с этими кнопками, на каждую из которых вешаете по макросу. Они есть в моем предыдущем файле. Открытие формы вешаете на событие Workbook_Open
Тогда делаете форму с этими кнопками, на каждую из которых вешаете по макросу. Они есть в моем предыдущем файле. Открытие формы вешаете на событие Workbook_Open_Boroda_
Как при следующем открытии книги на следующий день изменить адрес внесения данных? ( т.е. надо уже в соответствующую дату)
Вот так [vba]
Код
nr_ = Cells(Rows.Count, 1).End(3).Row - 1 'кол-во строк ar = Cells(2, 1).Resize(nr_).Value 'все из первого столбца (даты) суем в массив For i = 2 To nr_ 'цикл по массиву If ar(i, 1) = Date Then 'если i-й элемент массива равен текущей дате (Date) r_ = i + 1 'присваиваем переменной r значение i+1 - это и будет номер нужной строки Exit For 'выход из цикла End If ' Next i
[/vba] Это есть в макросах из сообщений 4 и 2 (там по столбцам, а не по строкам, но принципиальной разницы в этом нет)
Как при следующем открытии книги на следующий день изменить адрес внесения данных? ( т.е. надо уже в соответствующую дату)
Вот так [vba]
Код
nr_ = Cells(Rows.Count, 1).End(3).Row - 1 'кол-во строк ar = Cells(2, 1).Resize(nr_).Value 'все из первого столбца (даты) суем в массив For i = 2 To nr_ 'цикл по массиву If ar(i, 1) = Date Then 'если i-й элемент массива равен текущей дате (Date) r_ = i + 1 'присваиваем переменной r значение i+1 - это и будет номер нужной строки Exit For 'выход из цикла End If ' Next i
[/vba] Это есть в макросах из сообщений 4 и 2 (там по столбцам, а не по строкам, но принципиальной разницы в этом нет)_Boroda_
Сегодня, 19 апреля, я открываю таблицу-заполняю-сохраняю-закрываю. Всё, сегодня больше не пользуюсь.
Завтра, 20 апреля, я открывают таблицу- заполняю-данные вносятся уже в строку соответствующую завтрашней дате? (20.04) Обязательно предыдущая дата должна быть заполнена?-что то не работает (заполняет за 18,04 хотя сегодня 19,04)
Правильно понимаю, этот код, выше, вставлять в Лист1?
_Boroda_, Это будет работать так? ;
Сегодня, 19 апреля, я открываю таблицу-заполняю-сохраняю-закрываю. Всё, сегодня больше не пользуюсь.
Завтра, 20 апреля, я открывают таблицу- заполняю-данные вносятся уже в строку соответствующую завтрашней дате? (20.04) Обязательно предыдущая дата должна быть заполнена?-что то не работает (заполняет за 18,04 хотя сегодня 19,04)
Правильно понимаю, этот код, выше, вставлять в Лист1?Marr
Сообщение отредактировал Marr - Воскресенье, 19.04.2020, 21:40
Итак, имеется первый столбец с датами. Имеется textbox. Необходимо чтобы при заполнении textbox эти же значения попадали во второй столбец в сегодняшнею дату. Пожалуйста подскажите методику такой задачи
Здравствуйте!
Сложновато разобраться. Немного упрощу вопрос.
Итак, имеется первый столбец с датами. Имеется textbox. Необходимо чтобы при заполнении textbox эти же значения попадали во второй столбец в сегодняшнею дату. Пожалуйста подскажите методику такой задачиMarr