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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2010, 12:24   #1
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию Диалоговое окно с выбором листов.

Здравствуйте!
Помогите, пожалуйста. Надо сделать так: двойной клик левой клавишей мышки по первой ячейке строки, начиная с 8 строки, вызывает диалог: На какой лист копировать? И ниже список существующих не скрытых листов. Можно выбрать один лист, несколько, все. По кнопке ОК данная строка копируется на выбранные листы как есть.
С двойным кликом я разобралась, копировать умею. Как сделать такое диалоговое окно, где бы выводились все листы данной книги?
kipish_lp вне форума Ответить с цитированием
Старый 28.04.2010, 15:26   #2
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

Код:
Private Sub CommandButton1_Click()
Dim arr
Dim sh As Worksheet
Dim k As Long
ReDim arr(1 To ThisWorkbook.Sheets.Count)
For Each sh In Worksheets
If sh.Visible = True Then
k = k + 1
arr(k) = sh.Name
End If
Next sh
ListBox1.List = arr
End Sub

как то так
Dophin вне форума Ответить с цитированием
Старый 28.04.2010, 15:31   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Так подойдёт?



Вот весь код:

= модуль листа =
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Код:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 1 And Target.Row >= 8 Then Cancel = True: UserForm1.Show
End Sub

= модуль формы =

Код:
Private Sub CommandButton1_Click()
    Dim sh As Worksheet
    For i = 0 To Me.ListBox1.ListCount - 1
        If Me.ListBox1.Selected(i) Then
            Set sh = Worksheets(Me.ListBox1.List(i))
            ActiveCell.EntireRow.Copy sh.Range("a" & sh.Rows.Count).End(xlUp).Offset(1)
        End If
    Next
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    Unload Me
End Sub

Private Sub UserForm_Initialize()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Worksheets
        If sh.Name <> ActiveSheet.Name And sh.Visible = xlSheetVisible Then Me.ListBox1.AddItem sh.Name
    Next sh
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 29.04.2010, 14:42   #4
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

То что надо! Спасибо!
kipish_lp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диалоговое окно с 2 ячейками mephist Microsoft Office Excel 1 21.08.2009 19:22
Диалоговое окно Busine2009 Microsoft Office Word 0 01.08.2009 09:15
Диалоговое окно Михаил Юрьевич Общие вопросы Delphi 11 01.06.2009 20:31
Диалоговое окно при создании файла tae1980 Microsoft Office Excel 5 16.03.2009 21:41
Диалоговое окно Beggins Общие вопросы C/C++ 3 09.05.2008 05:03