Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Foutmelding bij willen uitvoeren van macro  (gelezen 249 keer)

0 leden en 1 gast bekijken dit topic.

Offline BlackDevil

  • Oplosser
  • ****
  • Berichten: 566
  • Geslacht: Vrouw
  • Oplossing.be
Foutmelding bij willen uitvoeren van macro
« Gepost op: 21 maart 2022, 09:17:55 »
Goeie voormiddag iedereen,

Ik ben vorige maand aan een gigantisch huishoudelijk project begonnen (ter voorbereiding van een verhuis).
Om het allemaal wat makkelijker en overzichtelijker te maken heb ik een bijhorend excel-bestand gemaakt dat ik nu aan het automatiseren ben met wat VBA-code.
Maar nu krijg ik een foutcode 400 van zodra ik de macro wil uitvoeren en ik vind totaal niet waar de fout zit.
De fout moet ergens in de werkbladen zelf zitten (denk ik) aangezien de foutmelding verschijnt nog voor er enige code uitgevoerd word maar ik zie het dus niet.
Ben er al sinds gisterenmiddag mijn hoofd over aan het breken.

Daarom hoop ik nu dat ik, via het forum hier, de oorzaak alsnog zou kunnen vinden.

In bijlage het betreffende voorbeeldbestand.
De betreffende sub “verwerken” die ik wil uitvoeren staat achter het werkblad “start”.
Ik heb in de code zelf commentaren toegevoegd inzake de bedoeling van de code.
De andere werkbladen dienen nog apart gecodeerd te worden in een later stadium.

Moest er toch nog iets niet duidelijk zijn dan hoor ik het graag.

Alvast mijn oprechte dank op voorhand.

Groetjes,
BlackDevil
Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz / RAM : 8,00 GB (7,89 GB beschikbaar) / 64-bits besturingssysteem, x64-processor / Intel(R) 7 Series Chipset Family SATA AHCIController / Qualcomm Atheros AR8161 PCI-E Gigabit Ethernet Controller (NDIS 6.30) / Qualcomm Atheros AR9485 Wireless Network Adapter / HGST HTS541010A9E680 / Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP OfficeJet 3831
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Volledig lid
  • *****
  • Berichten: 176
  • Hey, ik ben nieuw hier !
Re: Foutmelding bij willen uitvoeren van macro
« Reactie #1 Gepost op: 21 maart 2022, 10:00:58 »
Hallo BlackDevil,

Citaat
De fout moet ergens in de werkbladen zelf zitten (denk ik) aangezien de foutmelding verschijnt nog voor er enige code uitgevoerd word
Dat klopt niet, hoor. Er is wel degelijk al wat code uitgevoerd vooraleer je die fout krijgt, alleen resulteert de uitvoering niet in één of andere wijziging aan een werkblad.

De fout zelf? Op regel 38 komt een oud zeer naar boven: je probeert een range te selecteren (technisch mogelijk maar nutteloos) maar je probeert dat bovendien op een niet-actief werkblad. Dat moet in een fout resulteren.
Het zal wel lukken als je dat stukje zo aanpast:
        With .Range(.Cells(oudrij, 1), .Cells(oudrij, kol))
            .Interior.Color = vbRed
            .Font.Strikethrough = False
            .Font.Color = RGB(58, 56, 56)
        End With

Mvg,
Molly

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.217
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Foutmelding bij willen uitvoeren van macro
« Reactie #2 Gepost op: 21 maart 2022, 10:16:53 »
Blackdevil, je kan een andere sheet niet selecteren zoals je doet in je procedure. Als je 't zo doet, werkt het wel...
      With Sheets(oudblad)
        '----- betreffende rij 'markeren' als verwijderd dmv rode inkleuring
        kol = .Cells(3, Columns.Count).End(xlToLeft).Column
'        .Range(.Cells(oudrij, 1), .Cells(oudrij, kol)).Select
'        Selection.Interior.Color = vbRed
'        Selection.Font.Strikethrough = False
'        Selection.Font.Color = RGB(58, 56, 56)
        With .Range(.Cells(oudrij, 1), .Cells(oudrij, kol))
            .Interior.Color = vbRed
            .Font.Strikethrough = False
            .Font.Color = RGB(58, 56, 56)
        End With
      End With

Helaas loop je dan tegen een Error 9 aan in je verdere afwerking. Dat zit in dit blokje...
    '----- procedure voor 'onverwerkte items'
    If Cells(i, 8) = "" Then
      bronrij = i
      omschrijving = Cells(i, 2)
      aantal = Cells(i, 3)
      actloc = Cells(i, 4)
      handeling = Cells(i, 5)
      Cells(i, 6) = handeling
      doelblad = Cells(i, 6).Value
      With Sheets(doelblad)
        doelrij = .Cells(Rows.Count, 1).End(xlUp).Row + 1
        .Cells(doelrij, 1) = doelrij - 3
        .Cells(doelrij, 2) = omschrijving
        .Cells(doelrij, 3) = aantal
        .Cells(doelrij, 4) = actloc
        .Cells(doelrij, 5) = "start"
        .Cells(doelrij, 6) = bronrij
      End With
De variabele Doelblad is leeg. Daar mag je dan zelf ff mee aan de slag wat hier mis gaat....


______________________________

Groet, Leo

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.217
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Foutmelding bij willen uitvoeren van macro
« Reactie #3 Gepost op: 21 maart 2022, 10:19:10 »
Waarbij ik na het posten zie dat MollyVH het 1e deel ook al had aangegeven, maar ik langzamer ben met tikken (en nog bezig was met die Error 9) ;)
______________________________

Groet, Leo

Offline BlackDevil

  • Oplosser
  • ****
  • Berichten: 566
  • Geslacht: Vrouw
  • Oplossing.be
Re: Foutmelding bij willen uitvoeren van macro
« Reactie #4 Gepost op: 21 maart 2022, 10:58:28 »
@MollyVH en @RedHead,

Hartelijk dank voor jullie reacties.
Betreffende die fout die door jullie beide werd aangehaald heb ik dit aangepast
en krijg ik inderdaad nu die foutcode 400 niet meer.
Vind het eigenlijk raar dat daar de oorzaak zat omdat ik aanvankelijk die code
voor die eerste 'IF'-statement in een aparte Sub had staan achter hetzelfde werkblad
en dit toen wel perfect werkte, vandaar dat ik ervan uit ging dat die code goed was.

@RedHead,
Wat jouw vermelding inzake het tweede deel betreft ivm de variabele van doelblad is
deze inderdaad leeg bij de laatste rij omdat in die laatste rij enkel kolom A is ingevuld
en er dus nog geen item aanwezig is. Ik dacht dat ik dat omzeild had door bij de "rows.count"
voor kolom 2 te kiezen maar was vergeten dat bij een echte tabel ook lege rijen (of cellen)
als 'gebruikt' aanzien worden. Ik heb dus bij die tweede 'If'-statement de voorwaarde
aangepast dat hij de verdere code enkel mag uitvoeren als ook kolom 'E' wél ingevuld is.

Hartelijk dank voor jullie hulp, nu werkt de code op het werkblad 'start' zoals het hoort.  :thumbsup:

groetjes,
BlackDevil
Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz / RAM : 8,00 GB (7,89 GB beschikbaar) / 64-bits besturingssysteem, x64-processor / Intel(R) 7 Series Chipset Family SATA AHCIController / Qualcomm Atheros AR8161 PCI-E Gigabit Ethernet Controller (NDIS 6.30) / Qualcomm Atheros AR9485 Wireless Network Adapter / HGST HTS541010A9E680 / Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP OfficeJet 3831
Bullguard Premium Protection / Office Pro Plus 2016 NL

 


www.combell.com