Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel: rozevírací seznam s předvolenou hodnotou

No, takže myslíš, že pro více oblastí, kde potřebuju vybírat hodnotu či zadávat default či nechat "nic" by to mohlo fungovat (konktétně) takto?
(změnil jsem si rovnou AktOblA a přidal celkem tři oblasti)

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Oblast As Range
Set Oblast = Range("D10:D5000")

    If Application.Intersect(Target, Oblast) Is Nothing Then Exit Sub
    
    If Target = "" Then
        Range("D" & Target.Row) = ""
        Else
        Range("D" & Target.Row) = "tuzemsko"
    End If

Dim Rezim As Range
Set Rezim = Range("K10:K5000")

    If Application.Intersect(Target, Rezim) Is Nothing Then Exit Sub
    
    If Target = "" Then
        Range("K" & Target.Row) = ""
        Else
        Range("K" & Target.Row) = "1"
    End If

Dim Insolvence As Range
Set Insolvence = Range("U10:U5000")

    If Application.Intersect(Target, Insolvence) Is Nothing Then Exit Sub
    
    If Target = "" Then
        Range("U" & Target.Row) = ""
        Else
        Range("U" & Target.Row) = "N"
    End If

End Sub

...jak na to koukám (teď to nemám jak vyzkoušet a za chvíli jedu pryč), tak netuším, zda je to takto poskládáno správně. Aby se po první části (tedy u mě nastavení toho "tuzemsko" - tedy default - to na řádku neukončilo (Then Exit Sub) a ve sloupcích K a U to neudělalo nic.

Možná nastavit ty Dim a Set hned nahoře?

A nad rámec tohoto konkrétního problému, jak by to bylo, kdybych na listu už nějaký VBA kód měl? Muselo by se to zkombinovat nějak dohromady nebo jen připlácnout na konec?
Dejme tomu, že to, co tu teď řeším, bych potřeboval přidat na list, kde už mám tento kód:


Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Chyba
Application.EnableEvents = False
    If (Target.Column <> 6 _
        And Target.Column <> 7 _
        And Target.Column <> 8 _
        And Target.Column <> 12 _
        And Target.Column <> 16 _
        And Target.Column <> 20 _
        And Target.Column <> 24) _
        Or Target.Row < 5 Or Target > 311299 Or Target < 10100 Or Mid(Target, 6, 1) = "," Or Mid(Target, 7, 1) = "," Then
        Application.EnableEvents = True
        Exit Sub
    End If
    If Mid(Target, 5, 1) > 4 Then
        Stoleti = 19
        Else: Stoleti = 20
    End If
    Target = Left(Target, 2) & "." & Mid(Target, 3, 2) & "." & Stoleti & Right(Target, 2)
    
    Range("AG1:AG2").NumberFormat = ";;;"
    Range("AG1") = Target
    Range("AG2").FormulaR1C1 = "=IF(ISERROR(DATEVALUE(R[-1]C)),""Chyba"","""")"
    If Range("AG2") = "Chyba" Then
        Target.Select
        MsgBox "Zadané datum neexistuje!", vbCritical, "Pozor"
    End If
    Application.EnableEvents = True
    Exit Sub

Chyba:
    Application.EnableEvents = True
    Exit Sub
End Sub

To řešit nepotřebuji, to jsem teď jen vyhrabal z jiného souboru, jde mi jen o princip, jak to "spojit", když obě makra dělají něco jiného a mají platit v různých oblastech listu.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny