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

Вход

Регистрация

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

 

= Мир MS Excel/Адресная книга - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Адресная книга (Макросы/Sub)
Адресная книга
Pelena Дата: Суббота, 24.10.2015, 15:36 | Сообщение № 21
Группа: Админы
Ранг: Местный житель
Сообщений: 19187
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
А мне Enabled=False больше нравится, сразу видно, что поле неактивно


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеА мне Enabled=False больше нравится, сразу видно, что поле неактивно

Автор - Pelena
Дата добавления - 24.10.2015 в 15:36
OIU Дата: Суббота, 24.10.2015, 15:41 | Сообщение № 22
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
tbAdresFirma.Enabled = False
Locked = True

Да, такой вариант больше подходит! Благодарю!


С уважением Евгений Ковель
 
Ответить
Сообщение
tbAdresFirma.Enabled = False
Locked = True

Да, такой вариант больше подходит! Благодарю!

Автор - OIU
Дата добавления - 24.10.2015 в 15:41
OIU Дата: Суббота, 24.10.2015, 15:42 | Сообщение № 23
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
А мне Enabled=False больше нравится, сразу видно, что поле неактивно

Так оно конечно, но тускловато...


С уважением Евгений Ковель
 
Ответить
Сообщение
А мне Enabled=False больше нравится, сразу видно, что поле неактивно

Так оно конечно, но тускловато...

Автор - OIU
Дата добавления - 24.10.2015 в 15:42
Pelena Дата: Суббота, 24.10.2015, 16:21 | Сообщение № 24
Группа: Админы
Ранг: Местный житель
Сообщений: 19187
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
Вот, благодаря подсказке от RAN макрос FillComboBox сократился до двух строк
[vba]
Код
Private Sub FillComboBox()
    cbFirma.List = Sheets(2).ListObjects("Названия").DataBodyRange.Value
    cbEmailFirma.List = Sheets(2).ListObjects("Статусы").DataBodyRange.Value
End Sub
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВот, благодаря подсказке от RAN макрос FillComboBox сократился до двух строк
[vba]
Код
Private Sub FillComboBox()
    cbFirma.List = Sheets(2).ListObjects("Названия").DataBodyRange.Value
    cbEmailFirma.List = Sheets(2).ListObjects("Статусы").DataBodyRange.Value
End Sub
[/vba]

Автор - Pelena
Дата добавления - 24.10.2015 в 16:21
OIU Дата: Суббота, 24.10.2015, 16:41 | Сообщение № 25
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
Вот, благодаря подсказке от RAN макрос FillComboBox сократился до двух строк

Вот это здорово!!! Т.е. как я понимаю, только эти две строки отвечают за содержимое данных в выпадающих списках и при добавлении мной нового поля выпадающего списка и прописывания данных макросов с соответствующими названиями, список будет такой-же как и эти?


С уважением Евгений Ковель
 
Ответить
Сообщение
Вот, благодаря подсказке от RAN макрос FillComboBox сократился до двух строк

Вот это здорово!!! Т.е. как я понимаю, только эти две строки отвечают за содержимое данных в выпадающих списках и при добавлении мной нового поля выпадающего списка и прописывания данных макросов с соответствующими названиями, список будет такой-же как и эти?

Автор - OIU
Дата добавления - 24.10.2015 в 16:41
OIU Дата: Суббота, 24.10.2015, 16:51 | Сообщение № 26
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
Еще одна проблемка. С запретом на редактирование разобрались. Как отключить для этих полей (у которых запрещено редактирование), возможность перезаписи данных в ячейках? Просто получается то, что если добавляешь или редактируешь данные, после сохранения ячейки с формулами перезаписываются на обычный текст.


С уважением Евгений Ковель
 
Ответить
СообщениеЕще одна проблемка. С запретом на редактирование разобрались. Как отключить для этих полей (у которых запрещено редактирование), возможность перезаписи данных в ячейках? Просто получается то, что если добавляешь или редактируешь данные, после сохранения ячейки с формулами перезаписываются на обычный текст.

Автор - OIU
Дата добавления - 24.10.2015 в 16:51
Pelena Дата: Суббота, 24.10.2015, 17:40 | Сообщение № 27
Группа: Админы
Ранг: Местный житель
Сообщений: 19187
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
Где в Вашем примере ячейки с формулами?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеГде в Вашем примере ячейки с формулами?

Автор - Pelena
Дата добавления - 24.10.2015 в 17:40
OIU Дата: Суббота, 24.10.2015, 17:50 | Сообщение № 28
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
Где в Вашем примере ячейки с формулами?

В примере: Столбец "Адрес";"Заметки";"Фамилия2".
К сообщению приложен файл: 1111.xlsm (43.8 Kb)


С уважением Евгений Ковель
 
Ответить
Сообщение
Где в Вашем примере ячейки с формулами?

В примере: Столбец "Адрес";"Заметки";"Фамилия2".

Автор - OIU
Дата добавления - 24.10.2015 в 17:50
Pelena Дата: Суббота, 24.10.2015, 18:36 | Сообщение № 29
Группа: Админы
Ранг: Местный житель
Сообщений: 19187
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
Достаточно в макросе SaveChanges удалить (или закомментировать) строчки, которые отвечают за перенос значений из формы на лист.
Например, для адреса это будет строчка
[vba]
Код
rngTable.Cells(nr, 3).Offset(tmpOffset, 0).Value = tbAdresFirma.Text
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеДостаточно в макросе SaveChanges удалить (или закомментировать) строчки, которые отвечают за перенос значений из формы на лист.
Например, для адреса это будет строчка
[vba]
Код
rngTable.Cells(nr, 3).Offset(tmpOffset, 0).Value = tbAdresFirma.Text
[/vba]

Автор - Pelena
Дата добавления - 24.10.2015 в 18:36
OIU Дата: Суббота, 24.10.2015, 18:41 | Сообщение № 30
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
Достаточно в макросе SaveChanges удалить (или закомментировать) строчки, которые отвечают за перенос значений из формы на лист.
Например, для адреса это будет строчка

Спасибо огромное!!! Даже не знаю что делал бы без вас.


С уважением Евгений Ковель
 
Ответить
Сообщение
Достаточно в макросе SaveChanges удалить (или закомментировать) строчки, которые отвечают за перенос значений из формы на лист.
Например, для адреса это будет строчка

Спасибо огромное!!! Даже не знаю что делал бы без вас.

Автор - OIU
Дата добавления - 24.10.2015 в 18:41
OIU Дата: Воскресенье, 25.10.2015, 12:29 | Сообщение № 31
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
А как задать изменение текста на кнопке "btnSave" по условию?
Т.е. при отображении надписи "lblNenaiden" (которая отображается при условии если не найдено совпадений при введении названия фирмы и номера телефона), текст "Save" заменяется на текст "Добавить".


С уважением Евгений Ковель
 
Ответить
СообщениеА как задать изменение текста на кнопке "btnSave" по условию?
Т.е. при отображении надписи "lblNenaiden" (которая отображается при условии если не найдено совпадений при введении названия фирмы и номера телефона), текст "Save" заменяется на текст "Добавить".

Автор - OIU
Дата добавления - 25.10.2015 в 12:29
OIU Дата: Воскресенье, 25.10.2015, 13:40 | Сообщение № 32
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
Я к форме добавил кнопку "добавить только паспорт". Будьте так добры, напишите код или отметьте те строки комментариями, которые отвечают за добавление информации из поля "cbFirma" и поля "tbTelefonFirma" в таблицу "Phonebook".

При нажатии на кнопку "добавить только паспорт", данные из полей "cbFirma" и "tbTelefonFirma" нужно добавить в столбцы "Тип паспорта" и "тип датчика", которые расположены в таблице "ТаблПаспорта" на втором листе. Только если там еще нет такого названия и номер.
Заранее искренне вам благодарен!!! :respect:
В файле исправлен код, который закрывает все книги без предупреждения. ПРОСТИТЕ! Я не знал этого. :'(
К сообщению приложен файл: 1113_test.xlsm (49.1 Kb)


С уважением Евгений Ковель

Сообщение отредактировал OIU - Воскресенье, 25.10.2015, 17:40
 
Ответить
СообщениеЯ к форме добавил кнопку "добавить только паспорт". Будьте так добры, напишите код или отметьте те строки комментариями, которые отвечают за добавление информации из поля "cbFirma" и поля "tbTelefonFirma" в таблицу "Phonebook".

При нажатии на кнопку "добавить только паспорт", данные из полей "cbFirma" и "tbTelefonFirma" нужно добавить в столбцы "Тип паспорта" и "тип датчика", которые расположены в таблице "ТаблПаспорта" на втором листе. Только если там еще нет такого названия и номер.
Заранее искренне вам благодарен!!! :respect:
В файле исправлен код, который закрывает все книги без предупреждения. ПРОСТИТЕ! Я не знал этого. :'(

Автор - OIU
Дата добавления - 25.10.2015 в 13:40
RAN Дата: Воскресенье, 25.10.2015, 15:24 | Сообщение № 33
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
DELETE!
Ищите, и обрящете.
Премного благодарен за файл!

[p.s.]ВНИМАНИЕ! В коде
[vba]
Код
    Application.DisplayAlerts = False
    Application.Quit
[/vba][/p.s.]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Воскресенье, 25.10.2015, 15:35
 
Ответить
СообщениеDELETE!
Ищите, и обрящете.
Премного благодарен за файл!

[p.s.]ВНИМАНИЕ! В коде
[vba]
Код
    Application.DisplayAlerts = False
    Application.Quit
[/vba][/p.s.]

Автор - RAN
Дата добавления - 25.10.2015 в 15:24
OIU Дата: Воскресенье, 25.10.2015, 18:19 | Сообщение № 34
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
DELETE!
Ищите, и обрящете.
Премного благодарен за файл!

Спасибо вам! Я исправил. Надеюсь что это никому не успело навредить.


С уважением Евгений Ковель
 
Ответить
Сообщение
DELETE!
Ищите, и обрящете.
Премного благодарен за файл!

Спасибо вам! Я исправил. Надеюсь что это никому не успело навредить.

Автор - OIU
Дата добавления - 25.10.2015 в 18:19
OIU Дата: Воскресенье, 25.10.2015, 18:25 | Сообщение № 35
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
При нажатии на кнопку "добавить только паспорт", данные из полей "cbFirma" и "tbTelefonFirma" нужно добавить в столбцы "Тип паспорта" и "тип датчика", которые расположены в таблице "ТаблПаспорта" на втором листе.

С этим я вроде как разобрался:
[vba]
Код
Private Sub cbPasport_Click()
    Dim nr As Integer
    Dim rngTable As Range, rngName As Range
    Dim tmpFirma As String
    Dim tmptelefonFirma As String
    Dim tmpOffset As Integer

    Set rngTable = Range("ТаблПаспорта[#all]")
    Set rngName = Range("Названия[#all]")
    flag = 0
    For i = 2 To rngName.Rows.Count
        If rngName.Cells(i, 1) = cbFirma.Value Then flag = 1
    Next i
    If flag = 0 Then rngName.Cells(rngName.Rows.Count, 1).Offset(1).Value = cbFirma.Value
    
    nr = GetRowNumber(cbFirma.Value, tbTelefonFirma.Value)
    If nr = -1 Then
        nr = GetFreeNumber
    End If
    If nr = -1 Then
        nr = rngTable.Rows.Count
        tmpOffset = 1
    End If

    rngTable.Cells(nr, 1).Offset(tmpOffset, 0).Value = cbFirma.Text
    rngTable.Cells(nr, 2).Offset(tmpOffset, 0).Value = tbTelefonFirma.Text

    tmpFirma = cbFirma.Text
    tmptelefonFirma = tbTelefonFirma.Text
    tmpemailfirma = cbEmailFirma.Text

    lblNenaiden.Visible = False
    FillComboBox
    cbFirma.Value = tmpFirma
    tbTelefonFirma.Text = tmptelefonFirma
    cbEmailFirma.Value = tmpemailfirma

    MsgBox "Паспорт добавлен!"
End Sub
[/vba]
Но вот только этот макрос, добавляет значения даже если такое название и номер есть. Это очень не есть хорошо.
Уважаемые участники, без вас мне не разобраться. %)


С уважением Евгений Ковель
 
Ответить
Сообщение
При нажатии на кнопку "добавить только паспорт", данные из полей "cbFirma" и "tbTelefonFirma" нужно добавить в столбцы "Тип паспорта" и "тип датчика", которые расположены в таблице "ТаблПаспорта" на втором листе.

С этим я вроде как разобрался:
[vba]
Код
Private Sub cbPasport_Click()
    Dim nr As Integer
    Dim rngTable As Range, rngName As Range
    Dim tmpFirma As String
    Dim tmptelefonFirma As String
    Dim tmpOffset As Integer

    Set rngTable = Range("ТаблПаспорта[#all]")
    Set rngName = Range("Названия[#all]")
    flag = 0
    For i = 2 To rngName.Rows.Count
        If rngName.Cells(i, 1) = cbFirma.Value Then flag = 1
    Next i
    If flag = 0 Then rngName.Cells(rngName.Rows.Count, 1).Offset(1).Value = cbFirma.Value
    
    nr = GetRowNumber(cbFirma.Value, tbTelefonFirma.Value)
    If nr = -1 Then
        nr = GetFreeNumber
    End If
    If nr = -1 Then
        nr = rngTable.Rows.Count
        tmpOffset = 1
    End If

    rngTable.Cells(nr, 1).Offset(tmpOffset, 0).Value = cbFirma.Text
    rngTable.Cells(nr, 2).Offset(tmpOffset, 0).Value = tbTelefonFirma.Text

    tmpFirma = cbFirma.Text
    tmptelefonFirma = tbTelefonFirma.Text
    tmpemailfirma = cbEmailFirma.Text

    lblNenaiden.Visible = False
    FillComboBox
    cbFirma.Value = tmpFirma
    tbTelefonFirma.Text = tmptelefonFirma
    cbEmailFirma.Value = tmpemailfirma

    MsgBox "Паспорт добавлен!"
End Sub
[/vba]
Но вот только этот макрос, добавляет значения даже если такое название и номер есть. Это очень не есть хорошо.
Уважаемые участники, без вас мне не разобраться. %)

Автор - OIU
Дата добавления - 25.10.2015 в 18:25
Pelena Дата: Воскресенье, 25.10.2015, 19:16 | Сообщение № 36
Группа: Админы
Ранг: Местный житель
Сообщений: 19187
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
Почему бы не сделать это автоматом по аналогии с Названиями?
Раз уж хочется кнопкой, то как-то так. Не знаю, как правильно добавлять значения в "умную" таблицу. Сделала, как с обычной
[vba]
Код
Private Sub cbPasport_Click()
    Dim nr As Integer
    Dim rngTable As ListObject

    Set rngTable = Sheets("Лист2").ListObjects("ТаблПаспорта")
    nr = rngTable.Range.Rows.Count

    flag = 0
    For i = 2 To nr
        If rngTable.Range.Cells(i, 1) = cbFirma.Value And rngTable.Range.Cells(i, 2) = tbTelefonFirma.Value Then flag = 1
    Next i
    If flag = 0 Then
        rngTable.Range.Cells(nr, 1).Offset(1).Value = cbFirma.Value
        rngTable.Range.Cells(nr, 2).Offset(1).Value = tbTelefonFirma.Value
        MsgBox "Паспорт добавлен!"
    Else
        MsgBox "Паспорт найден в таблице!"
    End If
End Sub
[/vba]
[p.s.]И да, нейтрализуйте Вашу кнопку Закрыть, а то действительно вредительство какое-то[/p.s.]
К сообщению приложен файл: 7367140.xlsm (42.3 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПочему бы не сделать это автоматом по аналогии с Названиями?
Раз уж хочется кнопкой, то как-то так. Не знаю, как правильно добавлять значения в "умную" таблицу. Сделала, как с обычной
[vba]
Код
Private Sub cbPasport_Click()
    Dim nr As Integer
    Dim rngTable As ListObject

    Set rngTable = Sheets("Лист2").ListObjects("ТаблПаспорта")
    nr = rngTable.Range.Rows.Count

    flag = 0
    For i = 2 To nr
        If rngTable.Range.Cells(i, 1) = cbFirma.Value And rngTable.Range.Cells(i, 2) = tbTelefonFirma.Value Then flag = 1
    Next i
    If flag = 0 Then
        rngTable.Range.Cells(nr, 1).Offset(1).Value = cbFirma.Value
        rngTable.Range.Cells(nr, 2).Offset(1).Value = tbTelefonFirma.Value
        MsgBox "Паспорт добавлен!"
    Else
        MsgBox "Паспорт найден в таблице!"
    End If
End Sub
[/vba]
[p.s.]И да, нейтрализуйте Вашу кнопку Закрыть, а то действительно вредительство какое-то[/p.s.]

Автор - Pelena
Дата добавления - 25.10.2015 в 19:16
OIU Дата: Воскресенье, 25.10.2015, 19:24 | Сообщение № 37
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
И да, нейтрализуйте Вашу кнопку Закрыть, а то действительно вредительство какое-то

В файле исправлен код, который закрывает все книги без предупреждения. ПРОСТИТЕ! Я не знал этого.


С уважением Евгений Ковель

Сообщение отредактировал OIU - Воскресенье, 25.10.2015, 19:25
 
Ответить
Сообщение
И да, нейтрализуйте Вашу кнопку Закрыть, а то действительно вредительство какое-то

В файле исправлен код, который закрывает все книги без предупреждения. ПРОСТИТЕ! Я не знал этого.

Автор - OIU
Дата добавления - 25.10.2015 в 19:24
OIU Дата: Воскресенье, 25.10.2015, 19:41 | Сообщение № 38
Группа: Пользователи
Ранг: Новичок
Сообщений: 48
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
Pelena, сделайте пожалуйста, чтобы после нажатия на кнопку "внести изменения", данные в формах таблицы обновлялись. :victory:
А можно удалять пустые макросы?
[vba]
Код
Private Sub Frame5_Click()

End Sub

Private Sub Label29_Click()

End Sub

Private Sub lblNenaiden_Click()

End Sub

Private Sub tbAdresFirma_Change()

End Sub

Private Sub tbFamilia_K1_Change()

End Sub

Private Sub tbOtchestvo_K1_Change()

End Sub
[/vba]
Что-то вроде этого...
Цитата
Не отразится ли это на работе остальных макросов в целом?

Вроде как не отразилось...


С уважением Евгений Ковель

Сообщение отредактировал OIU - Воскресенье, 25.10.2015, 20:53
 
Ответить
СообщениеPelena, сделайте пожалуйста, чтобы после нажатия на кнопку "внести изменения", данные в формах таблицы обновлялись. :victory:
А можно удалять пустые макросы?
[vba]
Код
Private Sub Frame5_Click()

End Sub

Private Sub Label29_Click()

End Sub

Private Sub lblNenaiden_Click()

End Sub

Private Sub tbAdresFirma_Change()

End Sub

Private Sub tbFamilia_K1_Change()

End Sub

Private Sub tbOtchestvo_K1_Change()

End Sub
[/vba]
Что-то вроде этого...
Цитата
Не отразится ли это на работе остальных макросов в целом?

Вроде как не отразилось...

Автор - OIU
Дата добавления - 25.10.2015 в 19:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Адресная книга (Макросы/Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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