Stránka 1 z 1

VBA Excel - pojmenování oblasti na NEaktivním listu.

Napsal: 17 zář 2014 15:58
od vonv
Ahoj,
možná zbytečný/hloupý dotaz, ale lze v kódu pojmenovat oblast na neaktivním listu nebo ho musím napřed aktivovat?

např.:
(je-li aktivní jiný list)
Set oblast = Sheets("Položky").Range(Cells(1, 1), Cells(3, 3))

Bez aktivace daného listu mi to háže chybu č 1004.

Oblast je proměnlivá a při určení velikosti oblasti pomocí Cells pak používám proměnné.
Motivace je, aby mi při běhu kódu neproblikávala okna - jen drobnost, ale chci na to přijít.

Díky.

Re: VBA Excel - pojmenování oblasti na NEaktivním listu.

Napsal: 17 zář 2014 18:16
od cmuch
Ten tvůj zápis nahraď

Kód: Vybrat vše

Set oblast = Sheets("Položky").Range(Cells(1, 1).Address & ":" & Cells(3, 3).Address)


Pokud nechceš aby ti sešit problikával při běhu makra,
tak na začátek dej Application.ScreenUpdating = False a nakonec Application.ScreenUpdating = True

Re: VBA Excel - pojmenování oblasti na NEaktivním listu.

Napsal: 17 zář 2014 23:49
od guest
Pánové, co takhle zaměřit se na Cells.. k čemu se vztahuje bez uvedení rodiče?

Re: VBA Excel - pojmenování oblasti na NEaktivním listu.

Napsal: 18 zář 2014 06:08
od cmuch
Tady je zrovna jedno k čemu (k jakému rodiči) se vztahuje,
pomocí cells adresy beru adresu pro range.

Re: VBA Excel - pojmenování oblasti na NEaktivním listu.

Napsal: 18 zář 2014 07:07
od vonv
no... range (i cells v zápisu jako hranice oblasti) je vlastnostní (work)sheets a bez uvedení se vztahuje k aktivnímu lilstu. Proto jsem tam uvedl plnou "cestu" s myšlenkou, že tak nemusím daný list aktivovat,což se ukázalo jako mylná úvaha...

opravte mě případně.

díky.

Re: VBA Excel - pojmenování oblasti na NEaktivním listu.

Napsal: 18 zář 2014 10:56
od lubo.
No, tak cestu jsi neuvedl (tam, kde měla být):

Kód: Vybrat vše

Set oblast = Range(Sheets("List2").Cells(1, 1), Sheets("List2").Cells(3, 3))


Osobně dávám psaní teček přednost. Kód se může měnit, kopírovat, spouštět v různých podmínkách, ...Pokud tam ten rodič je, je obvykle riziko chyby menší nebo se apoň případná chyba lépe hledá.

Re: VBA Excel - pojmenování oblasti na NEaktivním listu.

Napsal: 18 zář 2014 16:22
od guest
No striktně rodiče neuvedl ani jeden z vás.

Kód: Vybrat vše

Sub Ukazka()

    Dim Oblast As Range

    With Worksheets("Položky")
        Set Oblast = .Range(.Cells(1, 1), .Cells(3, 3))
    End With

    Oblast.Interior.ColorIndex = 5

End Sub


Jinak jsem přesvědčen, že by oblast šla definovat lépe.

Kód: Vybrat vše

Sub Ukazka2()

    Dim Oblast As Range

    Set Oblast = Worksheets("Položky").Cells(1).Resize(3, 3)

    Oblast.Interior.ColorIndex = 6

End Sub


A nejjednodušší je oblast pojmenovat a nemusíte řešit nic, stačí se jen odkázat Range("Oblast").