Objektem vyžadovaná chyba v aplikaci Excel VBA - řešení potíží

Přehled chyb vyžadovaných objektem

Tento tutoriál vám pomůže při odstraňování chyb vyžadovaných objektem ve VBA.

<

<

Přehled objektů

Ve VBA je objekt „věc“ jako list, sešit, rozsah, tvar, řádek, sloupec, forma uživatele, ovládací prvek atd.

Objekty mají vlastnosti (exs: název, barva, skryté) a metody (exs: open, clear, save, hide). Pokud se pokusíte použít vlastnost nebo metodu, VBA potřebuje platný objekt, na který bude vlastnosti nebo metody aplikovat.

Pokud neposkytnete platný Objekt, obdržíte Objektem vyžadovaná chyba.

Tato příručka vám pomůže při odstraňování chyb vyžadovaných objektem.

#1. Volitelné explicitní / chybně napsané názvy proměnných

Nejprve zkontrolujte, zda jste nesprávně zadali název objektu. Chybně napsaný název může způsobit chybu vyžadovanou objektem.

To se může stát u stávajících názvů objektů:

<>

Nebo s názvy proměnných:

<>

Jedním z dobrých způsobů, jak zabránit chybně napsaným názvům proměnných, je zajistit deklaraci Option Explicit v horní části modulu kódu.

1 Možnost Explicitní

Volba Explicit vás nutí deklarovat proměnné. Nyní, když ladíte <> svůj kód, obdržíte zprávu, kterou potřebujete k definování proměnné:

<>

To by vám mělo pomoci zjistit, že proměnná obsahuje překlep.

Programování VBA | Generátor kódu pracuje pro vás!

#2 Variabilní přiřazení

Dále se ujistěte, že jste správně přiřadili proměnné.

Proměnné objektu je třeba přiřadit pomocí Set Object =: <>

<>

Pokud pro přiřazení proměnných objektů nepoužíváte Set, zobrazí se chyba Object Required.

<>

Podobně by bez sady měly být přiřazeny neproměnné proměnné:

<>

Pokud se pokusíte použít Set na neobjektové proměnné, zobrazí se chyba Object Required.

<>

#3 Moduly na úrovni pracovního listu

Je váš kód v modulu na úrovni listu? Pokud ano, budete muset být obzvláště opatrní při odkazování na pojmenované rozsahy na jiných listech.

Můžete mít například úroveň sešitu s názvem rozsah „Datum“, v modulu pravidelného kódu můžete na pojmenovaný rozsah odkazovat takto:

1 Hodnota rozsahu MsgBox ("Datum")

Pokud však odkazujete na pojmenovaný rozsah z modulu na úrovni listu, musíte explicitně definovat list, kde se nachází pojmenovaný rozsah:

1 Tabulky MsgBox („List2“). Rozsah („Datum“). Hodnota

Jinak narazíte na chybu:

<>

wave wave wave wave wave