With end with problemen

Status
Niet open voor verdere reacties.

harolda1980

Gebruiker
Lid geworden
7 aug 2007
Berichten
488
Doormiddel van een with / end with structuur geef ik aan waarin wat uitgevoerd moet worden. Tussen de verschillende bestanden die de applicatie gebruikt.

Met de volgende regels krijgt datafile1 de naam van het eerste bestand.
Code:
Set datafile1 = Application.ActiveWorkbook
Wanneer ik dan het volgende doe:
Code:
with datafile1 
 with sheets("ls")

 end with
end with
Krijg ik de fout melding dat het werkblad niet aanwezig is terwijl hij daadwerkelijk aanwezig.

Kent iemand deze problematiek?
 
Ja, kijk in de hulpfunktie van de VBEditor of in je VBA-handboek bij With...End With.
Het is de bekende, niet verder kijken dan... problematiek.
 
Daar heb ik al meerdere male zitten kijken!
Klopt het dan dat ik eigenlijk die twee losse with in een moet zetten?
 
Hoe moet VBA weten dat de sheet deel uitmaakt van het werkboek ?
Waarom zet jij een punt tussen application en activeworkbook ?
 
Goeie vraag ooit ergens gelezen! Jij raad aan dus alles in een regel te zetten

Omdat ik eerst een with van het bestand neerzet en daarna het sheet.
Code:
With <bestand>.<sheet>

end with
 
1. maak geen overbodige objectvariabelen.
2. voeg geen evidenties toe (in dit geval application, omdat de VBA-code binnen de application Excel gedraaid wordt.)

Kijk eens waarom dit wel werkt (zoek de verschillen en probeer die te verklaren).

Code:
With Activeworkbook
  With [B][SIZE="3"][COLOR="Red"].[/COLOR][/SIZE][/B]Sheets("ls")
     ----------------
  End With
End With
 
Dat snap ik..

Dan de volgende vraag.

Wat als ik in een macro telkens switch tussen diverse bestanden.

Hoe geef ik die dan mee. Daarvoor gebruikte ik de set functie. Zodra de applicatie een werkboek opende werk hij als object gedefinieerd.

Als voorbeeld een 3 tal bestanden die buiten de applicatie zelf geopend worden in de macro:
Database
Sjabloon
totalisatie bestand
 
Antwoord: schrijf je in voor een cursus VBA en lees boeken die daarover gaan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan