• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Methode Select van Range mislukt

Status
Niet open voor verdere reacties.

terbeest

Gebruiker
Lid geworden
8 sep 2000
Berichten
437
Hallo,

Ik zit met het volgende probleempje.
Ik moet het volgende laten uitvoeren met een button:

Sheets("Producten").Activate
Range("A3").Select

Dit gebeurd dus vanaf een ander werkblad.

Ik krijg hierbij de foutmelding "Methode Select van klasse Range is mislukt. Foutcode 1004."

Blijkbaar kan ik dus geen cellen selecteren. terwijl Sheets("Producten").Activate gewoon normaal werkt.

Wat kan hier aan de hand zijn?

Groeten,
 
Je moet in een macro zelden een cel selecteren om er een bewerking op te kunnen uitvoeren. Als het toch nodig is, maak dan een opdrachtknop aan via de werkbalk Formulieren ipv via de werkbalk Werkset Besturingselementen, dan zal die code wel werken. Vergeet niet om de macro dan naar een module te verplaatsen.
 
Geplaatst door Ingrid B
Je moet in een macro zelden een cel selecteren om er een bewerking op te kunnen uitvoeren.

Wat is dan de goede manier om een bewerking uit te voeren op een cel vanuit een macro?
Ik selecteer namelijk altijd cellen met macro's. Dit heeft ook al wel de nodige problemen opgeleverd, dus als er betere manier is, hoor ik dat graag.

Brutus
 
Geplaatst door brutus
Wat is dan de goede manier om een bewerking uit te voeren op een cel vanuit een macro?
Ik selecteer namelijk altijd cellen met macro's. Dit heeft ook al wel de nodige problemen opgeleverd, dus als er betere manier is, hoor ik dat graag.
Hier is moeilijk een algemeen antwoord op te geven. Maar misschien dat deze voorbeeldjes kunnen helpen:
Code:
Sub fout()
Dim naam As String
  naam = ActiveSheet.Name
  Sheets("Blad3").Select
  Range("B5").Select
  ActiveCell = "waarde"
  Sheets(naam).Select
End Sub
Met deze code wordt op Blad3 in cel B5 een waarde geplaatst en wordt vervolgens terug het oorspronkelijke werkblad geselecteerd. Volgende code doet exact hetzelfde, maar wel sneller:
Code:
Sub goed()
  Sheets("Blad3").Range("B5") = "waarde"
End Sub
Als het selecteren van een cel of een werkblad niet strict noodzakelijk is, spaar je zo typwerk uit, wordt de macro beter leesbaar, en zal de uitvoeringstijd van de macro verkorten.
 
Hee alweer hardstikke bedankt...

Die code had ik ook al door, alleen is het in mijn geval wel noodzakelijk de cel te selecteren.

Werkt als een zonnetje nu...

Groeten,
 
De tweede manier is inderdaad sneller, maar in beide gevallen selecteer je nog steeds de cel toch?
 
Geplaatst door brutus
De tweede manier is inderdaad sneller, maar in beide gevallen selecteer je nog steeds de cel toch?
Nee, de cel wordt niet daadwerkelijk geselecteerd, er wordt enkel een bewerking op uitgevoerd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan