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.