Възможно ли е с падащ списък да се отваря избран от мен шийт

1 одобрение 0 неодобрения
попитан 13 март в VBA от ИВАН начинаещ (20 точки)

Мъча се от падащия списък да закача към него шийт ? Така изглежда 1 шийт.

След като дам на падащия списък 

Искам да ми се отвори шийт 3. Като замени самата таблица от шийт 1.

 

2 коментари

коментиран 13 март от Tormozko учител (104 точки)
Аз не се сещам как може да стане без да се ползва макрос (VBA).
коментиран 13 март от ИВАН начинаещ (20 точки)
А с макрос (VBA) ще стане ли ???
И ако става по този начин ще може ли малко инфо какво да направя . Мерси

2 отговори

2 одобрения 0 неодобрения
отговорени 14 март от Mitaka88 учител (125 точки)
редактиран 16 март от Mitaka88

Виж дали това дали няма да ти свърши работа: https://www.extendoffice.com/documents/excel/3571-excel-select-sheet-based-on-cell-value.html

В примера, който е показан се избират различни шийтове, според това какво си натиснал в падащото меню. Вместо sheet1, sheet2 можеш да преименуваш шийтовете на лада, москвич и т.н и би трябвало да работи. 

Ъпдейт: Ето ти примерно решение, с което можеш да копираш съдържанието на шийта, който си избрал от падащото меню в шийт 1.

1. Създаваш комбо бокс (специално падащо меню, което да работи с макроси)

Първо трябва да активираш developer таба в ексел (file-> options ->customise ribbon)

След това developer -> insert ->combobox

excel combo box

 

 

 

 

 

2. След като създадеш падащото меню, даваш десен бутон върху него и assign macro

3. Това ще те отведе на правилното място във vba editora на ексел. Триеш всичко, което е там и поставяш следния код. Сложим съм подробни обяснения, така че всичко да е ясно:

Private Sub ComboBox1_Change()
'if a sheet is selected from the dropdown list
    If ComboBox1.ListIndex > -1 Then
        'copy the selected worksheet
        Sheet = ComboBox1.Value
        Set ws = Worksheets(Sheet)
        'Choose the range you want to copy
        ws.Range("A1:B10").Copy
        'Activate Sheet1. Change "Sheet1" with the corresponding sheet name
        Sheets("Sheet1").Activate
        'Select the target range
        Range("A1").Select
        'Paste in the target destination
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Range("A1").Select
    End If
End Sub

Private Sub ComboBox1_DropButtonClick()
    Dim xSheet As Worksheet
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    If ComboBox1.ListCount <> ThisWorkbook.Sheets.Count Then
        ComboBox1.Clear
        For Each xSheet In ThisWorkbook.Sheets
            ComboBox1.AddItem xSheet.Name
        Next xSheet
    End If
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Private Sub ComboBox1_GotFocus()
    If ComboBox1.ListCount <> 0 Then ComboBox1.DropDown
End Sub

Необходимо е да замениш "Sheet1"  в най-горното макро (Combobox1_Change) с името на първия ти шийт. Имай предвид, че това макро няма да "отваря" отделните листи, а просто ще копира информацията от тях, т.е., когато ъпдейтваш информацията, тя ще се променя само в sheet1. Ако искаш просто да "отваряш" другия шийт е достатъчно просто да замениш първото макро (Combobox1_Change) със следния код:

 Private Sub ComboBox1_Change()
    If ComboBox1.ListIndex > -1 Then Sheets(ComboBox1.Text).Select 
 End Sub

Другите макроси трябва да останат непроменени. Не забравяй и да запазиш екселския файл като macro-enabled(.xlsm), за да можеш да ползваш и друг път този код. 

3 коментари

коментиран 14 март от ИВАН начинаещ (20 точки)
Мерси.
Но работата излиза по-сложна от колкото си мислех :(
А познанията ми не достигат за работа с кодове и макроси.
И все пак ако на някой му се струва че за него е лесно и може да ми помогне мога да му пратя файла да види за какво става дума.
Мерси на всички.
коментиран 14 март от ИВАН начинаещ (20 точки)
Всичко това го правя за да има само един шийт за по-удобно използване. Другите ще бъдат скрити.
коментиран 16 март от Mitaka88 учител (125 точки)
Промених си отговора, ако искаш мога да ти пратя и файла с примерното решение, да видиш какво точно съм направил и дали ще можеш да го пригодиш за това, което ти трябва.
0 одобрения 0 неодобрения
отговорени 17 март от ИВАН начинаещ (20 точки)
Здравейте отново, По начина по-който се мъчих нищо не стана.

За това редактирах цялата таблица и го направих по - друг начин.

1 лист е главния а втория съм вкарал всички данни и след това с vlookup и ставна работата.

и чак тогава си направих дефенирано име и всичко си работи. Е не е точно това което исках но пак ще свърши работа.
Добре дошли в българския форум за Ексел и Майкрософт офис! Тук можете да питате хора със знания и опит, както и да споделите знанията и опита си с другите.
...