Help!

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

Hulp bij posten

Recente topics

Auteur Topic: niet aansluitende cellen leegmaken via VBA  (gelezen 12197 keer)

0 leden en 1 gast bekijken dit topic.

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
niet aansluitende cellen leegmaken via VBA
« Gepost op: 24 juli 2021, 17:43:20 »
Goedenavond allemaal,

Puur uit verveling heb ik besloten om een vorig bestand (genealogische indexeringen) in een nieuw jasje te steken en er iets aan toe te voegen.
Ipv de indexeringen rechtstreeks in de index-tabellen aan te vullen heb ik in een apart werkblad (“INPUT”) een soort invoerschermpje (het is geen formulier, gewoon zuivere excel opmaak) gemaakt waarmee ik op die wijze de tabellen aanvul.
Afhankelijk van de waarde van de soort akte (in cel D3) word dan binnen mijn macro een andere sub opgestart  (via de functie ‘GoSub’).
Ik heb enkel nog maar de code voor de geboorten geschreven en het overzetten van de gegevens in het invoerschermpje naar de tabel werkt perfect. Voor de huwelijken en overlijdens zal dit dus op soortgelijke wijze gecodeerd worden.
De macro zit achter de afbeelding (vinkje) op het invoerscherm.

Wat ik nu nog zou willen toevoegen aan elke aparte sub is dat, na overzet van de gegevens in het invoerscherm naar de betreffende tabel, de ingevulde cellen in het werkblad (“INPUT”) worden leeggemaakt zodat de volgende invoer kan ingegeven worden.
Omdat de invoercellen niet aaneensluitend zijn weet ik niet zo goed hoe ik dit moet gaan coderen.

Hopelijk wil iemand mij hiermee op weg helpen.
In bijlage mijn bestandje.

Alvast dank op voorhand.

Groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #1 Gepost op: 24 juli 2021, 20:14:48 »
Je kunt dat in 1 regel zetten. Zie hieronder voor de methodiek.

Range(“A1, A3:A10, B2:B8, D10”).ClearContents
Dit maakt alles leeg in die bereiken/cellen.
Kan zijn dat je de aanhalingstekens even moet vervangen(alles eigenlijk, het is niet gebaseerd op jouw bestand). Is getypt op een iphone ;D

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #2 Gepost op: 25 juli 2021, 04:40:19 »
Hey Veerj,

Bedankt voor je reactie, hiermee kan ik zeker verder  ;).

Verder had ik nog een vraagje waarvoor ik hoop nogmaals op jouw expertise beroep te mogen doen.
Om de gegevens in het invoerschermpje makkelijker te kunnen invoeren had ik graag geweten hoe ik er het beste voor kan zorgen dat ik enerzijds bij het selecteren van het werkblad "INPUT" alsook na elke klik op de 'opdrachtknop' automatisch in cel "D3" kom te staan en anderzijds hoe ik er ook voor kan zorgen dat ik na elke "enter" naar de volgende invoercel kan springen.
Want zoals het nu is riskeer ik te vaak ongewild in de verkeerde cel te staan als ik begin te typen.

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #3 Gepost op: 25 juli 2021, 10:30:47 »
Ik heb de aankomende tijd geen pc bij de hand. Een uitgewerkt voorbeeld kan ik je helaas niet geven.

Om d3 te activeren
Achter een worksheet_activate event zet je:
Application.GoTo [D3]
Aan het einde van de macro(achter de knop) ook.

Om te voorkomen dat data op de verkeerde plek wordt ingevoerd zou ik te allen tijde een userform in VBA maken.
Alternatief is de ingebouwde userform optie in Excel.

Als dat voor jou niet werkt kun je de betreffende cellen beveiligen. Pijltje naar onderen springt dan gelijk naar de eerste niet-beveiligde cel

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #4 Gepost op: 25 juli 2021, 11:03:17 »
Hey Veerj,

Hartelijk dank dat je, ondanks geen pc bij de hand te hebben, toch de moeite neemt om te helpen. _/-\o_

Om cel "d3" te activeren heb ik jouw suggestie uitgevoerd en dit werkt al prima.

Om vervolgens, na het invullen van die cel en op 'enter' te drukken, naar de volgende invoercel ("d6") te gaan, en zo verder voor alle andere invoercellen, had ik op het internet een codeblokje gevonden waarbij ook gebruik gemaakt werd van de "Application.Goto" maar dan gecombineerd in een 'Select Case' achter een Worksheet_Change event maar dat blijkt totaal niet te werken.

Ook had ik reeds geprobeerd via het beveiligen van het werkblad met enkel de invoercellen bewerkbaar maar dan krijg ik telkens een foutmelding na het klikken van de opdrachtknop omdat het werkblad beveiligd is. Ik vermoed dat dan in de code zelf die beveiliging moet opgehoffen en terug geactiveerd worden maar daar heb ik totaal geen ervaring mee.

De reden dat ik niet onmiddellijk voor een formulier heb gekozen is omdat ik ook daar (qua codering) geen ervaring heb om de gegevens uit het formulier op te halen en vervolgens weg te schrijven. Het ontwerpen op zich van een formulier heb ik wel al vaker gedaan dus dat op zich is geen probleem.

Ik blijf verder zoeken en zie wel, afhankelijk van de resultaten/mogelijkheden, hoe ik het uiteindelijk aanpak.

groetjes,
BlackDevil

1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #5 Gepost op: 25 juli 2021, 12:39:14 »
Inderdaad, je kunt aan het begin unprotect en aan het eind protect zetten.

Activesheet.unprotect

Je Code….

Activesheet.protect

Of je sheet direct beveiligen met deze propertie:

Activesheet.protect Userinterfaceonly:=True, …,…,…

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #6 Gepost op: 25 juli 2021, 12:59:40 »
@Veerj,

Ik heb het blad beveiligd en de unprotect/protect regeltjes toegevoegd aan de code en nu krijg ik geen foutmelding meer, dus wat de code betreft lijkt het in orde te zijn maar...

Als ik nu via de pijltjes of de enter telkens naar de volgende cel ga dan slaagt hij de laatste invoercel altijd over, dus hij gaat van de voorlaaste terug naar de eerste. Thans de betreffende invoercel is net als alle andere invoercellen niet geblokkeerd.
Verder moet ik wel nog alert blijven als ik de datum ingeef dat ik dan pijltje-rechts moet gebruiken aangezien de drie invoercellen hiervoor op dezelfde rij liggen, maar dat is maar een kleinigheidje.

Nu moet ik dus op zoek gaan waarom hij die laatste invoercel altijd overslaat.

Sowieso hartstikke bedankt voor de weer grote en succesvolle hulp die je geboden hebt.  _/-\o_ :thumbsup:

groetjes,
BlackDevil

*edit*
Net gemerkt dat als ik de tab-toets gebruik ipv de pijltjes of enter dat hij dan die laatste cel wél mee activeert.
En door de tab-toets te gebruiken ben ik ineens ook van dat klein probleempje met die datum verlost.

Dus voorlopig lijkt alles in orde en werkend.  :thumbsup:
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #7 Gepost op: 25 juli 2021, 13:07:57 »
Hallo BlackDevil,

Zoals VeerJ al aangaf, gebruik een UserForm.
Zal in het begin misschien moeilijk zijn, maar je zult er zeker plezier van hebben.
Bijgevoegd een bestand voor het invullen van blad IDX-geb met een UserForm.
Succes.
Groet,

Albert

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #8 Gepost op: 25 juli 2021, 13:25:53 »
Graag gedaan. Mooi dat het opgelost is! :)

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #9 Gepost op: 25 juli 2021, 16:28:05 »
@Albert,

Omdat je me qua codering met jouw bestand de nodige aanzet had gegeven heb ik er mij dan toch aan gewaagd.
Ik heb eerst het userform verder afgewerkt (wat zoals verwacht moeiteloos is verlopen) en vervolgens heb ik dan
de code voor de huwelijken en de overlijdens aangevuld op basis van de code die jij had meegegeven voor de geboorten.
Bij de huwelijken was het héél eventjes zoeken omdat er daar twee rijen moeten toegevoegd worden, ééntje voor de bruidegom en ééntje voor de bruid maar op het eerste zicht is het me toch gelukt (misschien is er een betere manier maar mijn kennis is redelijk beperkt qua codering dus ja...).

Aangezien ik met mijn eigen bestand ondertussen al een pak verder stond met het coderen dan wat ik hier in mijn eerste vraagpost had bijgevoegd, (dus ook reeds de code voor de 'totaal' en 'gezinnen' werkbladen) moet ik nu nog wel de userform overbrengen naar mijn definitief bestand maar daar heb ik voldoende kennis voor.

Ik hang hier toch eventjes het bestandje aan met het net aangemaakt userform (het puur excel-ontwerp staat er ook wel nog op maar dat is gewoon om de vergelijking te maken).

Bedankt om me de nodige aanzet te geven.  :thumbsup:

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline AD1957

  • Ervaren lid
  • ***
  • Berichten: 250
  • Oplossing.be
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #10 Gepost op: 25 juli 2021, 18:38:45 »
Graag gedaan en succes.
Groet,

Albert

Offline Haije

  • Excel-Expert
  • Volledig lid
  • *****
  • Berichten: 197
  • Geslacht: Man
  • Oplossing.be
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #11 Gepost op: 27 juli 2021, 11:29:44 »
verwijder eerst alle samengevoegdecellen
selecteer alle leeg te maken cellen (m.b.v. de Ctrl-knop ingedrukt te houden) en geef dan bv in het naamvak de naam "invoervelden".
D.m.v. commando Range("invoervelden2").ClearContentworden alle cellen in één keer geleegd
|-|aije

ik gebruik Office 2016 Professional Plus

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #12 Gepost op: 27 juli 2021, 11:49:50 »
Hey Haije,

Hartelijk dank voor je reactie.

Het leegmaken van de niet aaneensluitende cellen had ik op basis van de suggestie van Veerj (bericht #1) reeds in orde gekregen door volgende aangepast (aan mijn werkblad) regeltje toe te voegen :

Range("d3, d6, d9, f9, h9, d11:i33, d35").ClearContents
Op die manier heb ik dan ook de samengevoegde cellen kunnen behouden wat hier toch wel noodzakelijk was.

Toch nogmaals dank voor je bijdrage.

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #13 Gepost op: 27 juli 2021, 19:29:43 »
Let wel op met samengevoegde cellen en VBA.
Dat gaat heel vaak niet samen. Regel 1 is eigenlijk om nooit samengevoegde cellen te gebruiken icm VBA(al maakt het je bestand soms wat mooier)

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: niet aansluitende cellen leegmaken via VBA
« Reactie #14 Gepost op: 28 juli 2021, 13:41:13 »
Hallokes allen,

@Veerj

Dank voor de info en mij hier alert op te maken. Aangezien ik vermoed dat die samengevoegde cellen zeker voor mijn volgende vraag een probleem gingen vormen heb ik mijn ontwerp dusdanig aangepast zodat alle samengevoegde invoercellen nu enkele invoercellen zijn.

@allen

Ik heb dus een bijkomende vraag inzake mijn bestand (versie zonder userform).
Na het ingeven van enkele akten ben ik tot de conclusie gekomen dat de meeste invoercellen beter gewijzigd zouden worden in een soort ‘keuzelijst met invoervak’ omdat ik té vaak dezelfde namen moet intypen wat dus qua verwerkingstijd niet zo efficiënt werkt.

Ik heb op een apart werkblad ‘inhoud keuzelijsten’ drie echte tabellen aangemaakt en benoemd voor de betreffende keuzelijsten, nl. : “plaats” – “naam” – “voornaam”.
De lijsten “naam” en “voornaam” zijn dus op meerdere invoercellen van toepassing.

Omdat ik niet zeker weet welke soort keuzelijst het juist moet zijn, vermeld ik eventjes aan welke eigenschappen deze moet voldoen :

-   het invoervak moet enerzijds de eigenschap hebben om nog niet aanwezige namen toe te voegen aan de reeds bestaande keuzelijst en anderzijds moet deze, zodra ik begin te typen, de namen welke de reeds ingetypte letters bevatten, weergeven zodat ik, ingeval de naam reeds aanwezig is, de gewenste naam kan selecteren.
-   de keuzelijst zelf moet altijd alfabetisch gerangschikt zijn, nieuw ingevoerde namen automatisch laten  toevoegen en mag nooit een (voor)naam (of (voor)naam-combinatie) meer dan één keer vermelden.

De verwerking van de ingevoerde gegevens zit dus achter de opdrachtknop (afbeelding vinkje) en de macro schrijft, afhankelijk van de waarde in cel ‘G3’, de ingevoerde gegevens weg naar het correcte werkblad met de indexeringslijst (“IDX-geb” of “IDX-huw” of “IDX”-ovl”).
Binnen diezelfde macro worden dan, na het wegschrijven van de gegevens, de contents leeggemaakt en cel “G3” als actieve cel geselecteerd.

Hoe kan ik nu het best die keuzelijsten aanmaken zodat het gebruik ervan kan geďmplementeerd worden in de huidige macro zonder dat de correcte werking van de macro verstoord word?
Inzake de opdracht ‘.ClearContents’ mag dan ook enkel maar het invoervak zelf leeggemaakt worden en dus niet de volledige keuzelijst.

In bijlage stuur ik mijn up-to-date bestand. Hierin zijn ondertussen ook de werkbladen “totaal” en “gezinnen” in gebruik met de bijhorende macro’s maar voor mijn huidige vraag zijn enkel de werkbladen “INPUT” en “inhoud keuzelijsten” alsook de macro ‘input_idx’ (module : ‘mod_input’) relevant.


Alvast mijn oprechte dank voor de hulp en tips.


groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

 


www.combell.com