Страницы: 1
RSS
Редактирование данных таблицы через форму:
 
Доброго всем дня, форумчане! Пожалуйта помогите новичку сделать для своей работы программку. Возможно, ваша помощь нужна не только мне - за два дня в интернете ответов на свои вопросы не нашёл! Суть проблемы: Есть таблица, заполняемая данными через форму (с этим сложностей нет, поэтому в прилагаемом файле такая форма заполнения отсутствует). Как эти данные через другую форму редактировать? Как я понимаю, NextRow должна быть вычислена как строка, в которой находится активная в данный момент ячейки. Соответственно, в TextBox1 - TextBox_ формы должны быть текстовые значения ячеек этой строки с возможностью их изменения и сохранения через OKButton формы. Как это прописать в коде формы? Заранее всем СПАСИБО!
Изменено: kunar80 - 24.03.2013 23:15:26
 
Вы пишите
Цитата
Суть проблемы:
и дальше ни слова о сути проблемы.
Говорите о том, что есть форма, которая отлично работает. Дальше Ваше понимание того, как должна быть вычислена NextRow. Но в чем Ваша проблема - ни слова. Вы удивитесь, но в Вашем примере все работает! Корявенько, но именно так, как прописано в коде.

То, что написано в коде примера, полностью противоречит Вашим словам
Цитата
kunar80 пишет:
в TextBox1 - TextBox_ формы должны быть текстовые значения ячеек этой строки
просто посмотрите пример, может это оно.
 
Цитата
просто посмотрите пример, может это оно
Спасибо, это почти оно! Вот только записываются изменения новой строкой (так в моём примере прописано было потому, что не знаю, как сделать иначе), а записываться они должны по месту назначения. На то это и редактирование.
 
так и надо было говорить
 
Sergei_A,
Спасибо огромное! Теперь это действительно ОНО! А я-то два дня бился в поисках решения. Я ведь совсем не программист. А для работы нужно - вести учёт документов. Что в итоге получится - выложу здесь. Может, кому сгодится.
 
Попытался доработать то, что сделано Sergei_A, но пока никак не соображу, как заставить кнопку отказа от внесения изменений эти самые изменения не делать.
 
Вам именно форма нужна? Почему не msgbox?
попробуйте
 
Спасибо! Буду пытаться внедрить в то, что уже сделано
 
Благодаря помощи Sergei_A состряпал программку для своей работы. Это мой первый опыт программирования в VBA, так что не судите строго - я не программист, а начальник архива учреждения. Не всё ещё работает, поэтому нуждаюсь в помощи. Основные проблемы: запуск календаря и ComboBox.
 
В чём и где проблема с календарём?
С каким КомбоБоксом проблема и что за проблема?
kunar80, нужна помощь? - не заставляйте помогающих гадать.
 
Цитата
Юрий М пишет:
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 - сразу понятно, о чём разговор.
 
Цитата
Юрий М пишет:
Про ComboBox вообще не понял.
   With AddForm.ComboBox1
   .RowSource = ""
   .AddItem "Опись 1-ОС"
   .AddItem "Опись 2-ОС"
   .AddItem "Опись 1"
   End With

   With AddForm.ComboBox2
   .RowSource = ""
   .AddItem "1 год"
   .AddItem "2 года"
   .AddItem "3 года"
   .AddItem "5 лет"
   .AddItem "10 лет"
   .AddItem "15 лет"
   .AddItem "75 лет"
   .AddItem "75 лет - В"
   .AddItem "ПИН"
   .AddItem "Постоянно"
   End With

Вот так я их прописал в AddForm. Но это не работает!
 
Не нахожу на форме с комментариями КомбоБоксов.
 
Нашёл в редакторе... Зачем Вы их скрыли?! Опять облегчаете жизнь?
Переместите заполнение КомбоБокса в процедуру активации:
Код
Private Sub UserForm_Activate()
    With AddForm.ComboBox1
'        .RowSource = ""
        .AddItem "Опись 1-ОС"
        .AddItem "Опись 2-ОС"
        .AddItem "Опись-1"
    End With
End Sub

Со вторым ComboBox поступите аналогично.
 
Цитата
Юрий М пишет:
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
 
Не разбирался - что куда и откуда должно попасть. Поступите проще: Ячейка(х, у) = ТекстБоксN
 
Цитата
Юрий М пишет:
Как я понимаю, это календарь Игоря. Вы где его брали?
Брал конечно же в интернете. Файл прилагаю. Имя исходника не помню.
 
Обратите внимание - в модуле формы в области деклараций есть две строки:
Public SelectedDate As String, DefaultDate As String
Public dt_1 As Date, dt_2 As Date
Попробуйте сделать аналогично.
P.S. И не стоит на форум выкладывать рабочий файл - лучше сделать НЕБОЛЬШОЙ файл-пример с аналогичной проблемой. Легче будет разобраться и больше пользы при переносе кода из примера в рабочий файл.
Страницы: 1
Читают тему
Наверх