AL(23.4.2013 1:22)citovat#013062
Minimum, aby to vôbec fungovalo, je asi toto:Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.CodeName = "Sheet1" And Target.Address = Range("B3").Address Then 'je potrebne otestovat, ci menis bunku B3
Select Case Range("B3")
Case "A1"
MsgBox "Vybral si TYP A1"
ThisWorkbook.Sheets("Sheet1").Select
Range("B8:D9").Clear
Selection.Clear
ThisWorkbook.Sheets("Sheet3").Activate
Range("A3:C4").Copy
ThisWorkbook.Sheets("Sheet1").Activate
Range("B8").Select 'zabudol si na riadok, urcil si len stlpec
ActiveSheet.Paste
Case "A2"
MsgBox "Vybral si TYP A2"
Case "B1"
MsgBox "Vybral si TYP B1"
Case "B2"
MsgBox "Vybral si TYP B2"
Case "C1"
MsgBox "Vybral si TYP C1"
Case "C2"
MsgBox "Vybral si TYP C2"
Case Else 'je potrebne mysliet na eventualitu, kedy do B3 zapises i inu hodnotu, nez hore vymenovane
MsgBox "ine"
End Select
End If
End SubV kóde som urobil iba minimálne úpravy, aby si videl, kde bol hlavný problém

Vdaka za odpoved a riesenie.
Ja som vcera nad tym dumal preco sa mi moje povodne riesenie zacyklovalo a nasiel som dalsie funkcne riesenie:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Select Case Range("B3")
Case "A1"
MsgBox "Vybral si TYP A1"
ThisWorkbook.Sheets("Sheet1").Select
Application.EnableEvents = False
Range("B8:D9").Clear
ThisWorkbook.Sheets("Sheet3").Select
Range("A3:C4").Select
Selection.Copy
ThisWorkbook.Sheets("Sheet1").Select
Range("B8").Select
ActiveSheet.Paste
Application.EnableEvents = True
Case "A2"
MsgBox "Vybral si TYP A2"
Case "B1"
MsgBox "Vybral si TYP B1"
Case "B2"
MsgBox "Vybral si TYP B2"
Case "C1"
MsgBox "Vybral si TYP C1"
Case "C2"
MsgBox "Vybral si TYP C2"
End Select
End Sub
Bolo potrebne pridat prikaz na zamedzenie zacyklenia:
Najprv false:
Application.EnableEvents = False
Potom vratenie na True:
Application.EnableEvents = True

Ahoj AL,
este by som sa Ta spytal, ci je nejako mozne zmenit nazov listu "Sheet1" na nejaky iny?
V mojom pripade, ked zmenim pomenovanie listu v exceli a potom aj v kode, tak mi to nefunguje.
Vdaka.
AL(24.4.2013 10:26)citovat#013080
eLCHa Ti dal odpoveď, ja len dodám, že z uvedeného dôvodu som v úvode kódu písal:If Sh.CodeName = "Sheet1" And Target.Address = Range("B3").Address

Vdaka za rady, ale nefunguje mi to. Zadal som to nasledovne podla toho co napisal eLCHa:
skusal som tieto varianty:
If Sh.CodeName = Sheets(Sheet1.Name) And Target.Address = Range("B3").Address Then
If Sh.CodeName = ThisWorkbook.Sheets(Sheet1.Name)
And Target.Address = Range("B3").Address Then
If Sh.CodeName = ThisWorkbook.Sheet1
And Target.Address = Range("B3").Address Then
AL(24.4.2013 13:38)citovat#013083
Má to byť buď, ako som napísal ja, t.j.If Sh.CodeName = "Sheet1" And Target.Address = Range("B3").Address
alebo modifikácia toho, čo píše eLCHa:If Sh = Sheet1 And Target.Address = Range("B3").Address Then

@AL: dakujem!
Uz sa mi to podarilo nakombinovat tak, aby mi to fungovalo.

@AL
jenom technická
If Sh = Sheet1 And Target.Address = Range("B3").Address Then
asi vyhodí chybu (nebo nebude pracovat správně), protože Sh i Sheet1 jsou objekty, takže buď
If Sh.Name = Sheet1.Name And Target.Address = Range("B3").Address Then
nebo (ale takhle to taky napracuje vždycky dobře, zatím nevím proč)
If Sh Is Sheet1 And Target.Address = Range("B3").Address Then

@eLCHa:
If Sh = Sheet1 And Target.Address = Range("B3").Address Then
Ano mas pravdu, tato ALova modifikacia nefungovala spravne a vyhadzovala chybu.
Funkcne riesenia su 2 zatial:
eLCHa:
If Sh.Name = Sheet1.Name And Target.Address = Range("B3").Address Then
AL:
If Sh.CodeName = "Sheet1" And Target.Address = Range("B3").Address Then