Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2011, 20:51   #1
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

для второй кнопки сделал.

вот это номер! ответ прозвучал раньше, чем был сформулирован вопрос)))
Вложения
Тип файла: rar КнигаV700.rar (27.2 Кб, 19 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 15.07.2011 в 20:54.
IgorGO вне форума Ответить с цитированием
Старый 15.07.2011, 21:18   #2
Alexanrd
 
Регистрация: 15.07.2011
Сообщений: 4
По умолчанию Как сохранить выделенные пункты в listbox чтоб при следующем открытии файла они опять были выделенны?

Привет всем! Помогите пожалуйста.

Задача: возможность для каждого "клиента" выбирать категории (приложенный файл). Поле "categories" - чисто информативное и ни к чему (кроме самих категорий) не привязывается. Клиентов может быть сотни и тысячи, а категорий 30-50, т.е. нужно выводить только через выплывающий listbox с МУЛЬТИКЛИКОМ (из-за мультиклика нельзя сделать combobox, что было бы вообще идеально)
проблема: выбирать категории (столбец H) можно, но они не сохранятся: при следующем открытии файла listbox пустой =(((
Вложения
Тип файла: rar _Лист1.rar (25.0 Кб, 24 просмотров)
Alexanrd вне форума Ответить с цитированием
Старый 15.07.2011, 21:26   #3
Alexanrd
 
Регистрация: 15.07.2011
Сообщений: 4
По умолчанию Спасибо

ОО! Спасибо огромное!
но не обессудьте новичка, я немного еще не пойму как этот код применить к первой (и последующим запланированным кнопкам - а их будут сотни):
если копирую код со второй кнопки на первую (изменяю listbox2 на listbox1) - он делает одинаковые исправления на ОБЕИХ listbox'ах =)

Может вопрос прозвучал глупо, но я несколько часов назад до создания файла только первый раз увидел что такое макросы)
но немного разобраться и склепать кнопки с листбоксом удалось =)
Alexanrd вне форума Ответить с цитированием
Старый 15.07.2011, 21:42   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

информация о том, что отмечено складывается в ячейку под кнопкой см. в код cells(3,8). число 3 необходмо менять на след.ячейку для следующего Лист бокса.
Цитата:
а их будут сотни
писать сотни одинаковых процедур, вставлять сотни одинаковых по своей сути ЛистБоксов - это круто))). сколько клавиатур Вы за неделю изнашиваете? но как для человека несколько часов назад впервые увидевшего, что такое макрос - все сделано гениально! это серьезно.

на все нужен один ЛистБокс, одна процедура. и немного денег...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 15.07.2011 в 22:11.
IgorGO вне форума Ответить с цитированием
Старый 15.07.2011, 22:38   #5
Alexanrd
 
Регистрация: 15.07.2011
Сообщений: 4
По умолчанию

Спасибо большое!
очень помогло.
а до "одного листбокса" я еще дорасту) но пока и так пойдет.
спасибо еще раз
Alexanrd вне форума Ответить с цитированием
Старый 16.07.2011, 00:56   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

положите это в модуль листа1. вместо Вашего кода.
Код:
Public LBFor As Long

Private Sub worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim s As String, i As Long
  If Target.Column <> 8 Or Target.Row = 1 Then Exit Sub
  Cancel = True
  If LBFor <> 0 Then
    s = ""
    For i = 0 To Лист1.ListBox1.ListCount - 1
      If Лист1.ListBox1.Selected(i) Then s = s & "1 " Else s = s & "0 "
    Next
    Cells(LBFor, 8) = Left(s, Len(s) - 1)
  End If
  If Target.Row = LBFor Then
    Лист1.ListBox1.Visible = False
  Else
    LBFor = Target.Row
    Лист1.ListBox1.Visible = True
    If Cells(LBFor, 8) = "" Then
    For i = 0 To Лист1.ListBox1.ListCount - 1
      Лист1.ListBox1.Selected(i) = False
    Next
    Else
      For i = 0 To UBound(Split(Cells(LBFor, 8)))
        Лист1.ListBox1.Selected(i) = Split(Cells(LBFor, 8))(i) = "1"
      Next
    End If
    Лист1.ListBox1.Top = Target.Top
  End If
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.07.2011, 12:34   #7
Alexanrd
 
Регистрация: 15.07.2011
Сообщений: 4
По умолчанию

Ооо! класс! спасибо большое
Alexanrd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при открытии файла Klim Bassenger Microsoft Office Excel 2 16.09.2018 15:44
После сохранения в файл *.xls при открытии этого файла выдается предупреждение. Как от этого избавиться? A-IX-2 Общие вопросы Delphi 1 13.11.2011 20:33
Как убрать пустые строки при открытии XLS файла Des Общие вопросы Delphi 1 06.11.2010 09:13
Ошибка при открытии файла Ciberal Общие вопросы Delphi 2 09.06.2009 22:58
C++: ошибка при открытии файла Retiz Помощь студентам 2 30.08.2008 22:12