VBA: nelze použít With v kombinaci s objektem Worksheets

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

d1amond
člen HW spec týmu
Elite Level 12
Elite Level 12
Příspěvky: 16119
Registrován: květen 08
Bydliště: České Budějovice
Pohlaví: Muž
Stav:
Offline

VBA: nelze použít With v kombinaci s objektem Worksheets

Příspěvekod d1amond » 27 lis 2011 23:59

Zdravím,
plácám se tu s kódem a už nevím, co je špatně. Mám proceduru na tlačítko, která má prostý úkol. Z buňky A1 listu 1 aktivního sešitu odkud je spuštěná, načíst text (String).
Tento text je použit jako název druhého sešitu (Workbook - již otevřen) a následně chci na listu1 odkazovaného sešitu vybrat konkrétní buňku.

Kód: Vybrat vše

Sub pokus()
Dim wbk As Workbook
Dim wsh As Worksheet
Dim strWbkName As String

'nastavi nazev pro sesit
strWbkName = ThisWorkbook.Worksheets("list1").Range("A1").Value

'objekt workbook s názvem z strWbkName
Set wbk = Workbooks(strWbkName)

'objekt worksheet na wbk
Set wsh = wbk.Worksheets("list1")

'práce s objektem wsh
With wsh
.Range("C4").Select
'a pokracuje nejaky kod

End With

End Sub


Po spuštění hlásí "Metoda Select třídy Range selhala". Bude někdo vědět, kde je chyba?

//při psaní se intellisense chová naprosto normálně :eh:
Nikdy neříkej, že to nejde, protože se najde někdo, kdo o tom neví a udělá to!
Chcete si nechat sestavit nový počítač?

Reklama
Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: VBA: nelze použít With v kombinaci s objektem Worksheets

Příspěvekod Branscombe » 28 lis 2011 04:07

Tak to nevím, ale ani na netu jsem odpověď nenašel ikdyž ten samý problém už někdo jiný měl ...

Zkusil jsem to obejít aktivací okna souboru a funguje. Snad ti to pomůže.

Kód: Vybrat vše

Sub pokus()
Dim wsh As Worksheet
Dim strWbkName As String

'nastavi nazev pro sesit
strWbkName = ThisWorkbook.Worksheets("list1").Range("A1").Value

Windows(strWbkName).Activate

'objekt worksheet na wbk
Set wsh = ActiveWorkbook.Worksheets("list1")

'práce s objektem wsh
With wsh
.Range("C4").Select
'a pokracuje nejaky kod

End With

End Sub

d1amond
člen HW spec týmu
Elite Level 12
Elite Level 12
Příspěvky: 16119
Registrován: květen 08
Bydliště: České Budějovice
Pohlaví: Muž
Stav:
Offline

Re: VBA: nelze použít With v kombinaci s objektem Worksheets

Příspěvekod d1amond » 28 lis 2011 09:28

Díky. Podobně jsem to vyřešil s Range.Activate. Ale to je nemožné, pokud potřebuji pracovat s oběma sešity současně. V tomm případě bych musel po každé akci přepínat okna, a představ si cykly, které procházejí byť "jen" 1000 řádků v každém sešitu, na střídačku :roll:
Nikdy neříkej, že to nejde, protože se najde někdo, kdo o tom neví a udělá to!
Chcete si nechat sestavit nový počítač?

Uživatelský avatar
Branscombe
Level 3
Level 3
Příspěvky: 469
Registrován: červen 09
Pohlaví: Muž
Stav:
Offline

Re: VBA: nelze použít With v kombinaci s objektem Worksheets

Příspěvekod Branscombe » 29 lis 2011 02:02

Nemusíš stále přepínat okna, stačí jednou přepnout okno a definovat mu jen jednou že tento list je wsh. Ale jaksi nelze v tomto případě definovat wsh když jsi v jiném sešitu.

Pavel1234
nováček
Příspěvky: 41
Registrován: září 11
Pohlaví: Muž
Stav:
Offline

Re: VBA: nelze použít With v kombinaci s objektem Worksheets

Příspěvekod Pavel1234 » 29 lis 2011 21:53

Zdravím
Kody jsem nezkoušel ale nemyslím si, že problém je v přiřazení objektu
Nemusíš stále přepínat okna, stačí jednou přepnout okno a definovat mu jen jednou že tento list je wsh. Ale jaksi nelze v tomto případě definovat wsh když jsi v jiném sešitu.

ale je spíše v metodě select, která odmítá fungovat v neaktivním objektu (wbk; wsh)
Po spuštění hlásí "Metoda Select třídy Range selhala". Bude někdo vědět, kde je chyba?

Je tedy zapotřebí tuto metodu obejít Tedy místo

Kód: Vybrat vše

Wkb(1).Wsh(1).Range("A1").Select
vrt = Selection.Value

Napsat rovnou

Kód: Vybrat vše

vrt = Wkb(1).Wsh(1).Range("A1").Value

Problém je, že některé metody jsou dostupné pouze pro Selection. Zkus dát důvod toho .Select a pak mohu zkusit najít způsob jak ho obejít
Pavel


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Ktorú Ram použiť? Příloha(y)
    od Frank Burns » 11 lis 2024 21:38 » v Rady s výběrem hw a sestavením PC
    1
    870
    od RIKI22 Zobrazit poslední příspěvek
    11 lis 2024 21:39
  • Jak použít zálohu z CodePen na ChatGPT?
    od Minapark » 01 led 2025 18:48 » v Programování a tvorba webu
    1
    1859
    od Minapark Zobrazit poslední příspěvek
    06 led 2025 08:08
  • CPU pasta 2 roky stará, neotevřená... Mohu použít...?
    od TomiDomi » 28 říj 2024 22:59 » v Rady s výběrem hw a sestavením PC
    3
    1709
    od atari Zobrazit poslední příspěvek
    29 říj 2024 20:08
  • Nelze nainstalovat W10 Příloha(y)
    od sasshrek » 08 zář 2024 13:26 » v Windows 11, 10, 8...
    4
    3233
    od sasshrek Zobrazit poslední příspěvek
    08 zář 2024 15:12
  • Nelze nainstalovat Windows 11
    od helpmeboys » 04 pro 2024 14:52 » v Vše ostatní (sw)
    2
    2889
    od petr22 Zobrazit poslední příspěvek
    04 pro 2024 14:59

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti