Доброго всем дня, форумчане! Пожалуйта помогите новичку сделать для своей работы программку. Возможно, ваша помощь нужна не только мне - за два дня в интернете ответов на свои вопросы не нашёл! Суть проблемы: Есть таблица, заполняемая данными через форму (с этим сложностей нет, поэтому в прилагаемом файле такая форма заполнения отсутствует). Как эти данные через другую форму редактировать? Как я понимаю, NextRow должна быть вычислена как строка, в которой находится активная в данный момент ячейки. Соответственно, в TextBox1 - TextBox_ формы должны быть текстовые значения ячеек этой строки с возможностью их изменения и сохранения через OKButton формы. Как это прописать в коде формы? Заранее всем СПАСИБО!
и дальше ни слова о сути проблемы. Говорите о том, что есть форма, которая отлично работает. Дальше Ваше понимание того, как должна быть вычислена NextRow. Но в чем Ваша проблема - ни слова. Вы удивитесь, но в Вашем примере все работает! Корявенько, но именно так, как прописано в коде.
То, что написано в коде примера, полностью противоречит Вашим словам
Цитата
kunar80 пишет: в TextBox1 - TextBox_ формы должны быть текстовые значения ячеек этой строки
Спасибо, это почти оно! Вот только записываются изменения новой строкой (так в моём примере прописано было потому, что не знаю, как сделать иначе), а записываться они должны по месту назначения. На то это и редактирование.
Sergei_A, Спасибо огромное! Теперь это действительно ОНО! А я-то два дня бился в поисках решения. Я ведь совсем не программист. А для работы нужно - вести учёт документов. Что в итоге получится - выложу здесь. Может, кому сгодится.
Попытался доработать то, что сделано Sergei_A, но пока никак не соображу, как заставить кнопку отказа от внесения изменений эти самые изменения не делать.
Благодаря помощи Sergei_A состряпал программку для своей работы. Это мой первый опыт программирования в VBA, так что не судите строго - я не программист, а начальник архива учреждения. Не всё ещё работает, поэтому нуждаюсь в помощи. Основные проблемы: запуск календаря и ComboBox.
Юрий М пишет: kunar80, нужна помощь? - не заставляйте помогающих гадать
Спасибо. Для дат нужен выбор через календарь, чтобы не вводить вручную. Календарь присутствует, но не знаю, как его заставить работать. То же и по КомбоБоксам - не работают. Впрочем, запустив вложенный файл, сами всё увидите: на формах красным текстом наложены проблемные вопросы.
Private Sub TextBox9_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Form_SelectDate.Show
End Sub
Кнопка начала не нужна. Аналогично для TextBox окончания. Про ComboBox вообще не понял. И привыкайте давать контролам адекватные имена: разибрая код, разве можно понять назначение TextBox9? А вот присвой Вы ему имя, например, Txt_DateStar - сразу понятно, о чём разговор.
Нашёл в редакторе... Зачем Вы их скрыли?! Опять облегчаете жизнь? Переместите заполнение КомбоБокса в процедуру активации:
Код
Private Sub UserForm_Activate()
With AddForm.ComboBox1
' .RowSource = ""
.AddItem "Опись 1-ОС"
.AddItem "Опись 2-ОС"
.AddItem "Опись-1"
End With
End Sub
Юрий М пишет: Private Sub TextBox9_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Form_SelectDate.Show End Sub
Спасибо, вставил. Календарь открывается, но не работает. Выбор года - 1898 или 1900. Других нет. Ругается в Form_SelectedDate здесь: Private Sub Cmd_Select_Click() 'Команда - закончить выбор даты и закрыть форму SelectedDate = CStr(DateValue(dt_1)) Unload Me End Sub
Как я понимаю, это календарь Игоря. Вы где его брали? Отсутствуют две переменные: dt_1 и dt_2. Посмотрите в файле-оригинале в стандартном модуле, мне кажется, они были объявлены.
Юрий М пишет: Со вторым ComboBox поступите аналогично.
Спасибо. Сделал. Значения выбираются. А как быть с записью в таблицу? Как прописать и ТекстБоксы и КомбоБоксы? Сейчас прописано так: For I = 2 To 19 Cells(NextRow + 1, I) = Me.Controls("TextBox" & I).Text
Обратите внимание - в модуле формы в области деклараций есть две строки: Public SelectedDate As String, DefaultDate As String Public dt_1 As Date, dt_2 As Date Попробуйте сделать аналогично. P.S. И не стоит на форум выкладывать рабочий файл - лучше сделать НЕБОЛЬШОЙ файл-пример с аналогичной проблемой. Легче будет разобраться и больше пользы при переносе кода из примера в рабочий файл.