Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Определить номер столбца - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Определить номер столбца (Макросы/Sub)
Определить номер столбца
monstr_ork Дата: Воскресенье, 22.07.2018, 10:31 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте форумчане!
Помогите пожалуйста в решении проблемы.
В файле есть форма для заполнения и в зависимости от выбранного в форме журнала, происходит запись в тот или иной лист.
Проблема в том, что столбцы в листах стоят по разному и требуется определить номер столбца в зависимости от выбранного листа.
Т.е. "ФИО" в листе "Журнал обращений" стоит 4 в других листах он имеет другой номер.
Я пробовал использовать "умную таблицу". но так и не понял искать на листе умную таблицу в зависимости от выбора журнала.
Подскажите как можно найти номер столбца в зависимости от условий выбора?
К сообщению приложен файл: _.xlsm.xlsb (94.6 Kb)
 
Ответить
СообщениеЗдравствуйте форумчане!
Помогите пожалуйста в решении проблемы.
В файле есть форма для заполнения и в зависимости от выбранного в форме журнала, происходит запись в тот или иной лист.
Проблема в том, что столбцы в листах стоят по разному и требуется определить номер столбца в зависимости от выбранного листа.
Т.е. "ФИО" в листе "Журнал обращений" стоит 4 в других листах он имеет другой номер.
Я пробовал использовать "умную таблицу". но так и не понял искать на листе умную таблицу в зависимости от выбора журнала.
Подскажите как можно найти номер столбца в зависимости от условий выбора?

Автор - monstr_ork
Дата добавления - 22.07.2018 в 10:31
monstr_ork Дата: Воскресенье, 22.07.2018, 11:12 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Или как вариант сделать через цикл, но я не понимаю что нужно проверять
[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

End Sub
[/vba]

Автор - monstr_ork
Дата добавления - 22.07.2018 в 11:12
monstr_ork Дата: Воскресенье, 22.07.2018, 12:44 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Вопрос решен.
Решил для каждого optionbutton написать макрос, который будет исполнять вставку на определенный лист
[vba]
Код
    If Журнал1 Then Журнал_обращений
    If Журнал2 Then СоцПатранаж
    If Журнал3 Then КультМас
    If Журнал4 Then СоцПатранажВОВ
    If Журнал5 Then ПМ
[/vba]
 
Ответить
СообщениеВопрос решен.
Решил для каждого optionbutton написать макрос, который будет исполнять вставку на определенный лист
[vba]
Код
    If Журнал1 Then Журнал_обращений
    If Журнал2 Then СоцПатранаж
    If Журнал3 Then КультМас
    If Журнал4 Then СоцПатранажВОВ
    If Журнал5 Then ПМ
[/vba]

Автор - monstr_ork
Дата добавления - 22.07.2018 в 12:44
RAN Дата: Воскресенье, 22.07.2018, 12:52 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
  Cells(NextRow, ActiveSheet.ListObjects(1).ListColumns("ФИО").Range.Column) = ФИО.Text
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
  Cells(NextRow, ActiveSheet.ListObjects(1).ListColumns("ФИО").Range.Column) = ФИО.Text
[/vba]

Автор - RAN
Дата добавления - 22.07.2018 в 12:52
monstr_ork Дата: Воскресенье, 22.07.2018, 13:03 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, подскажите пожалуйста, ListObjects(1) - это идет проверка в первой таблице на активном листе? Т.е. если я возьму другой лист ListObjects(1) менять не нужно?
 
Ответить
СообщениеRAN, подскажите пожалуйста, ListObjects(1) - это идет проверка в первой таблице на активном листе? Т.е. если я возьму другой лист ListObjects(1) менять не нужно?

Автор - monstr_ork
Дата добавления - 22.07.2018 в 13:03
monstr_ork Дата: Воскресенье, 22.07.2018, 13:23 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 133
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, ответ не нужно, уже проверил сам =)
 
Ответить
СообщениеRAN, ответ не нужно, уже проверил сам =)

Автор - monstr_ork
Дата добавления - 22.07.2018 в 13:23
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Определить номер столбца (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!