referentie naar worksheet met 'with' werkt niet

Status
Niet open voor verdere reacties.

blax

Nieuwe gebruiker
Lid geworden
25 apr 2018
Berichten
3
Goedemorgen,

Ik heb een vraag over een stukje code dat ik heb gemaakt. Momenteel ben ik bezig het script wat netter te maken en probeer worksheet referenties te maken.

dit werkt wel
(op het werkblad "CP" staat een listbox genaamd "ExpSheets")
Code:
Sheets("CP").ExpSheets.Clear

dit werkt niet
In module mdlInitialize staat buiten een sub:
Code:
Public wksCP As Worksheet

binnen sub Initialize in mdlInitialize staat:
Code:
Set wksCP = Worksheets("CP")

In module "mdlListboxMethods" staat sub "populateListBox"
Als eerst call ik mdlInitialize.Initialize

Vervolgens wil ik ExpSheets clearen maar krijg een compile error.

Code:
with wksCP
     .ExpSheets.Clear
end with

Compile error: Method or data member not found.

vraag
Ik maak blijkbaar een denkfout, is er iemand die mij kan uitleggen wat er fout gaat wanneer ik overga naar

Code:
with wksCP
     .ExpSheets.clear
end with

en afstap van
Code:
sheets("CP").ExpSheets.clear

error in code.png
error in code2.png
dank u zeer,

blax
 
Declareer wksCP niet als Worksheet maar als Object ;)
 
Laatst bewerkt:
Declareer wksCP niet als Worksheet maar als Object ;)

dank! Leuk begin van de ochtend.


Wat is niet snap...onderstaande werkte altijd in eerder tools die ik heb gebruikt (Jaren geleden)

Code:
Public sProject as Worksheet
Public const nProject as String = "Project"

sub Initialize
  set sProject = Sheets(nProject)
end sub

sub thatMatters
  call Initialize
  'doe iets
end sub

Als ik dit inbouw in mijn code, wat ik eerder heb geprobeerd, (inclusief de public const) dan werkt dat niet. Enig idee waarom? Misschien alleen in eerdere versies van excel of mis ik een mogelijk een stukje code daar.

bedankt,

Blax
 
Laatst bewerkt:
Jouw error is een Compile-error,

Mijn poging om dit te verwoorden:
Wanneer je sProject declareert als een Worksheet, weet de Compiler niet welke 'additionele' controls op de betreffende sheet staan, immers je geeft pas in de code aan om welke sheet het gaat.
Code:
sProject.ListBox1.object.clear
lukt dus niet, want je gaat hier al vanuit dat er een ListBox1 op elke willekeurige sheet staat

Code:
sProject.OLEObjects("ListBox1").object.clear
Werkt wel omdat iedere sheet een collectie met OLEObjects bevat (al is deze leeg), wanneer ListBox1 niet bestaat krijg je uiteraard een foutmelding, maar pas bij het runnen van de code

Wanneer je sProject als Object declareert, kijkt de compiler niet naar andere objecten van sProject en krijg je pas een foutmelding wanneer bij het runnen van de code blijkt dat sProject geen Worksheet is en/of geen ListBox1 bevat
 
Laatst bewerkt:
Duidelijk,

Bedankt voor de uitleg!

groet,

Blax
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan