Здравствуйте форумчане! Помогите пожалуйста в решении проблемы. В файле есть форма для заполнения и в зависимости от выбранного в форме журнала, происходит запись в тот или иной лист. Проблема в том, что столбцы в листах стоят по разному и требуется определить номер столбца в зависимости от выбранного листа. Т.е. "ФИО" в листе "Журнал обращений" стоит 4 в других листах он имеет другой номер. Я пробовал использовать "умную таблицу". но так и не понял искать на листе умную таблицу в зависимости от выбора журнала. Подскажите как можно найти номер столбца в зависимости от условий выбора?
Здравствуйте форумчане! Помогите пожалуйста в решении проблемы. В файле есть форма для заполнения и в зависимости от выбранного в форме журнала, происходит запись в тот или иной лист. Проблема в том, что столбцы в листах стоят по разному и требуется определить номер столбца в зависимости от выбранного листа. Т.е. "ФИО" в листе "Журнал обращений" стоит 4 в других листах он имеет другой номер. Я пробовал использовать "умную таблицу". но так и не понял искать на листе умную таблицу в зависимости от выбора журнала. Подскажите как можно найти номер столбца в зависимости от условий выбора?monstr_ork
Или как вариант сделать через цикл, но я не понимаю что нужно проверять [vba]
Код
Private Sub Добавить_Click() Dim NextRow As Long Dim a As Worksheet
' Тут должен быть цикл для проверки условий
' Выбор активного листа ' Выбран Журнал обращений If Журнал1 Then Sheets("Журнал обращений").Activate
' Определение следующей пустой строки NextRow = Application.WorksheetFunction.CountA(Range("D:D")) + 1 ' Передача имени Cells(NextRow, 7) = ФИО.Text Cells(NextRow, 6) = ДатаОбращения.Text Cells(NextRow, 5) = ФормаОбращения.Text ' ' Передача пола If Муж Then Cells(NextRow, 7) = "Мужчина" If Жен Then Cells(NextRow, 7) = "Женщина" Exit For ' Выбран Соц.патранаж до принятия на обс If Журнал2 Then Sheets("Соц.патранаж до принятия на обс").Activate
' Определение следующей пустой строки NextRow = Application.WorksheetFunction.CountA(Range("D:D")) + 1 ' Передача имени Cells(NextRow, 4) = ФИО.Text Cells(NextRow, 2) = ДатаОбращения.Text Cells(NextRow, 3) = ФормаОбращения.Text ' ' Передача пола If Муж Then Cells(NextRow, 7) = "Мужчина" If Жен Then Cells(NextRow, 7) = "Женщина"
' Выбран Культурно-массовые мероприятия If Журнал3 Then Sheets("Культурно-массовые мероприятия").Activate
' Определение следующей пустой строки NextRow = Application.WorksheetFunction.CountA(Range("D:D")) + 1 ' Передача имени Cells(NextRow, 4) = ФИО.Text Cells(NextRow, 2) = ДатаОбращения.Text Cells(NextRow, 3) = ФормаОбращения.Text ' ' Передача пола If Муж Then Cells(NextRow, 7) = "Мужчина" If Жен Then Cells(NextRow, 7) = "Женщина"
' Выбран Соц.патранаж ветеранов ВОВ If Журнал4 Then Sheets("Соц.патранаж ветеранов ВОВ").Activate
' Определение следующей пустой строки NextRow = Application.WorksheetFunction.CountA(Range("D:D")) + 1 ' Передача имени Cells(NextRow, 4) = ФИО.Text Cells(NextRow, 2) = ДатаОбращения.Text Cells(NextRow, 3) = ФормаОбращения.Text ' ' Передача пола If Муж Then Cells(NextRow, 7) = "Мужчина" If Жен Then Cells(NextRow, 7) = "Женщина"
' Выбран Противопожарные мероприятия If Журнал5 Then Sheets("Противопожарные мероприятия").Activate
' Определение следующей пустой строки NextRow = Application.WorksheetFunction.CountA(Range("D:D")) + 1 ' Передача имени Cells(NextRow, 4) = ФИО.Text Cells(NextRow, 2) = ДатаОбращения.Text Cells(NextRow, 3) = ФормаОбращения.Text ' ' Передача пола If Муж Then Cells(NextRow, 7) = "Мужчина" If Жен Then Cells(NextRow, 7) = "Женщина"
' Проверка ввода имени
If ФИО.Text = "" Then MsgBox "" ФИО.SetFocus Exit Sub End If
' Очистка элементов управления для ввода следующей записи ' TextName.Text = "" ' TextName.SetFocus ' OptionMale = False ' OptionFemale = False
End Sub
[/vba]
Или как вариант сделать через цикл, но я не понимаю что нужно проверять [vba]
Код
Private Sub Добавить_Click() Dim NextRow As Long Dim a As Worksheet
' Тут должен быть цикл для проверки условий
' Выбор активного листа ' Выбран Журнал обращений If Журнал1 Then Sheets("Журнал обращений").Activate
' Определение следующей пустой строки NextRow = Application.WorksheetFunction.CountA(Range("D:D")) + 1 ' Передача имени Cells(NextRow, 7) = ФИО.Text Cells(NextRow, 6) = ДатаОбращения.Text Cells(NextRow, 5) = ФормаОбращения.Text ' ' Передача пола If Муж Then Cells(NextRow, 7) = "Мужчина" If Жен Then Cells(NextRow, 7) = "Женщина" Exit For ' Выбран Соц.патранаж до принятия на обс If Журнал2 Then Sheets("Соц.патранаж до принятия на обс").Activate
' Определение следующей пустой строки NextRow = Application.WorksheetFunction.CountA(Range("D:D")) + 1 ' Передача имени Cells(NextRow, 4) = ФИО.Text Cells(NextRow, 2) = ДатаОбращения.Text Cells(NextRow, 3) = ФормаОбращения.Text ' ' Передача пола If Муж Then Cells(NextRow, 7) = "Мужчина" If Жен Then Cells(NextRow, 7) = "Женщина"
' Выбран Культурно-массовые мероприятия If Журнал3 Then Sheets("Культурно-массовые мероприятия").Activate
' Определение следующей пустой строки NextRow = Application.WorksheetFunction.CountA(Range("D:D")) + 1 ' Передача имени Cells(NextRow, 4) = ФИО.Text Cells(NextRow, 2) = ДатаОбращения.Text Cells(NextRow, 3) = ФормаОбращения.Text ' ' Передача пола If Муж Then Cells(NextRow, 7) = "Мужчина" If Жен Then Cells(NextRow, 7) = "Женщина"
' Выбран Соц.патранаж ветеранов ВОВ If Журнал4 Then Sheets("Соц.патранаж ветеранов ВОВ").Activate
' Определение следующей пустой строки NextRow = Application.WorksheetFunction.CountA(Range("D:D")) + 1 ' Передача имени Cells(NextRow, 4) = ФИО.Text Cells(NextRow, 2) = ДатаОбращения.Text Cells(NextRow, 3) = ФормаОбращения.Text ' ' Передача пола If Муж Then Cells(NextRow, 7) = "Мужчина" If Жен Then Cells(NextRow, 7) = "Женщина"
' Выбран Противопожарные мероприятия If Журнал5 Then Sheets("Противопожарные мероприятия").Activate
' Определение следующей пустой строки NextRow = Application.WorksheetFunction.CountA(Range("D:D")) + 1 ' Передача имени Cells(NextRow, 4) = ФИО.Text Cells(NextRow, 2) = ДатаОбращения.Text Cells(NextRow, 3) = ФормаОбращения.Text ' ' Передача пола If Муж Then Cells(NextRow, 7) = "Мужчина" If Жен Then Cells(NextRow, 7) = "Женщина"
' Проверка ввода имени
If ФИО.Text = "" Then MsgBox "" ФИО.SetFocus Exit Sub End If
' Очистка элементов управления для ввода следующей записи ' TextName.Text = "" ' TextName.SetFocus ' OptionMale = False ' OptionFemale = False
RAN, подскажите пожалуйста, ListObjects(1) - это идет проверка в первой таблице на активном листе? Т.е. если я возьму другой лист ListObjects(1) менять не нужно?
RAN, подскажите пожалуйста, ListObjects(1) - это идет проверка в первой таблице на активном листе? Т.е. если я возьму другой лист ListObjects(1) менять не нужно?monstr_ork