• 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.

Via VBA Formulier zoeken met listbox, printen en importeren

Status
Niet open voor verdere reacties.

inconspicous

Gebruiker
Lid geworden
30 jul 2010
Berichten
7
Goedendag ik heb 3 excel VBA vraagjes en hoop hier op het juiste adres te zijn.

Situatie: Een lijst van storingen aan machines is samengevoegd met een velerlei andere lijstjes om een soort archief op te bouwen. Dit alles wordt handmatig bijgehouden buiten SAP omdat hier in de huidige situatie geen geschikte module voor is. Nu wil ik deze lijst zoveel mogelijk automatiseren waarbij ik ook "Must velden" kan aangeven en evt. andere dwanghekken kan inbouwen om de gegevens stroom zo zuiver mogelijk te maken.

Dit gaat gebeuren in een formulier waar men nieuwe regels moet kunnen invoeren(opslaan) en bestaande regels gewijzigd en verwijderd kunnen worden.

Vraag 1. (beantwoord door Breuk132, Dankje!)
Er moet een zoekfunctie komen waarbij meerdere hits getoond kunnen worden in een listbox.
Over dit laatste punt ontvang ik graag wat tips over hoe ik dit in elkaar zou kunnen knutselen.

Vraag 2.(beantwoord door Breuk132, Dankje!)
Daarnaast wil ik tevens gegevens importeren in het Formulier
bijv. een machine nr. invoeren waarbij vervolgens alle gegevens en type bij worden gezocht en in de juiste textbox als value worden geplaatst.
Deze gegevens zullen afkomstig zijn van een (SAP) lijst in een (verborgen) tabblad maar het liefst zou ik deze uit een extern excel bestand willen importeren.

Vraag 3. Tot slot moet er op het formulier een print functie zijn. Wat is de juiste werkwijze? De waarden op het formulier laten exporteren naar een 'Tabblad x' met een bepaalde opmaak? Of is een Printscreentje gemakkelijker?

Wie geeft mij raad ;)?
 
Laatst bewerkt:
Als jij ons kan voorzien van een voorbeeldbestandje met gegevens waar wij mee kunnen werken en met wat jij tot hiertoe in elkaar gebokst hebt willen wij je uiteraard graag verderhelpen.
Om al een antwoord te geven op je 2de vraag moet je er rekening mee houden dat je extern bestand geopend moet zijn om er gegevens uit te halen
 
Ok dan :o,

Let op ik ben nog maar een leek maar door naar de werken van anderen te kijken kom je een heel eind. Daarnaast ben ik van plan wat naslag werken van VBA excel door te spitten vanwege de vele mogelijkheden. En natuurlijk wil ik leren van de antwoorden die jullie mij geven :P

bij deze het voorbeeldje: :)

De volgende knoppen moeten nog functioneel worden gemaakt
- Zoeken (zoekfunctie met listbox)
- Wijzigen
- Verwijderen
- Machinegegevens ophalen [hiervoor heb ik een extra sheet toegevoegd met voorbeeldgegevens] Dit lijkt me momenteel gemakkelijker (beter werkbaar) dan de gegevens ophalen uit een extern excelbestand maar ik wil wel graag tips over de mogelijkheden om deze uit een gesloten excelbestand te halen!

Daarnaast moet er nog een print / export functie komen waarbij het hele formulier overzichtelijk op een A4'tje wordt weergegeven.
 

Bijlagen

  • SB.xls
    SB.xls
    71,5 KB · Weergaven: 244
Is mij nog niet helemaal duidelijk wat je precies wil.

Bijv je wilt zoeken op machinenummer. Enige lijst met nummers is tabblad machinegegevens. Maar elk nummer komt maar 1 keer voor dus snap je listbox dan niet. Je hebt maar 1 hit elke keer.

Het is dus wel even handig aan te gegeven waar gezocht moet worden. ik vermoed dat je alle storingen van tabblad "lijsten" in de listbox wilt hebben van dat machinenummer. Daarvoor is het wel handig een kolom met machinenummer toe te voegen. Als het van tabblad "sb" moet komen kan je beter de kolomhoofden een andere naam geven ipv kolom1, kolom2, etc.
Hetzelfde geldt ook voor de benaming van je objecten in je formulier. Met T9 weet je nog niet welke textbox dat nou precies als je aan het programmeren bent moet je de hele tijd heen en weer switchen. Kan je hem beter Machine_nr_t of iets dergelijks noemen. Die _t gebruikt ik altijd om aan te geven dat het een textbox is. Cx voor checkbox, Ob voor optionbutton, etc.
Is bij het schrijven van een code een stuk makkelijker.

Verder weet ik niet of het vaak voorkomt dat er meerdere mensen tegelijk erin moeten kunnen.
Dan kan je het beste 1 spreadsheet maken met alleen de macro's en 1 met de gegevens. Die open je dan alleen als je de gegevens wilt ophalen en gegevens wilt opslaan.
 
In tabblad ''SB'' moeten de records worden opgeslagen, gezocht, verwijderd en gewijzigd.
Het kan voorkomen dat bijv. 1 machine meerdere malen een storing heeft.
de kopnamen kolom 1, etc moeten natuurlijk nog netjes worden neergezet.

Het tabblad ''lijsten'' is info voor de drop down boxes

Het tabblad ''machinegegevens'' is een soort informatielijst waaruit je machinegegevens importeert als serienummer / type / bouwjaar / standplaats en klant en deze invult in het formulier. In excel zou je dit doen met verticaal zoeken maar hoe ik deze gegevens in een formulier kan importeren met VBA weet ik nog niet.

Het spreekt voor zich dat er in dit tablad 1 machine ook slechts een keer voorkomt waar ook niet in gezocht hoeft te worden.

p.s.
In het bestand kan het voorkomen dat er maximaal 2 a 3 personen tegelijk wordt bewerkt.
Met gegevens neem ik aan dat je de machine gegevens bedoelt en het zou inderdaad mijn voorkeur hebben dit vanuit een apart bestand te doen.
 
Laatst bewerkt:
Is dit een beetje wat je in gedachte had.

Ja zo zou het eerst tabblad er ongeveer uit moeten gaan zien.
Ik begrijp alleen nog niet helemaal wat je gedaan hebt met de zoekfunctie, want ik krijg het niet werkend.

De bedoeling is dat de listbox de hits weergeeft en wanneer je een hit selecteerd dat deze regel dan wordt weergegeven in het formulier.

Deze gegevens zou je vervolgens moeten kunnen wijzigen en met de knop wijzigen terugplaatsen(overschrijven) in de regel van herkomst.
 
De zoekfunctie kijkt in elke cel in kolom a of het nummer overeenkomt met het zoeknummer. Is dit het geval dan wordt die rij toegevoegd aan de listbox.

Ik heb het bestandje nog wat uitgebreid. Geselecteerde hit wordt nu in formulier weergegeven en knop verwijderen werkt.

Hier kan je denk ik wel verder mee.
 

Bijlagen

Wauw dat ziet er heel goed uit! :shocked:

Om de ongelukjes te voorkomen heb ik de Wijzigen en verwijderen knoppen disabled tijdens het toevoegen en vice versa. Het onderstaande zou dus nog kunnen worden toegevoegd om de knoppen actief te maken.

Code:
With Me
    .Wijzigen.Enabled = True 'Voorkomt ongelukjes
    .Verwijderen.Enabled = True 'Voorkomt ongelukjes
End With

Nu zou ik graag de zoekfunctie met 2 dingetjes willen uitbreiden:
- De zoekfunctie baseert zijn output nu op een volledig machine nummer. Is dit te tweaken zodat een gedeeltelijke invoer bijv. machinenr 21003* toch gevonden kan worden?
- Kan er een ''loop'' of ''loop until'' in de zoekfunctie worden gebouwd om het zoeken wat flexibeler te maken. Zeker wanneer het mogelijk is om met gedeeltelijke waarden te zoeken verwacht ik erg veel hits (en dus vrij veel handmatige code).

Alvast hartelijk bedankt voor jullie feedback! :thumb:
 
Heb hem aangepast zodat er op gedeelte van het nummer gezocht kan worden.

Wat je met het tweede bedoeld begrijp ik niet helemaal. Als je bedoeld dat er meerdere keren gezocht kan worden en dat hij de hits steeds toevoegt dan hoef je alleen bij het zoeken "listbox1.clear" weg te halen.
 

Bijlagen

Heb hem aangepast zodat er op gedeelte van het nummer gezocht kan worden.

Wat je met het tweede bedoeld begrijp ik niet helemaal. Als je bedoeld dat er meerdere keren gezocht kan worden en dat hij de hits steeds toevoegt dan hoef je alleen bij het zoeken "listbox1.clear" weg te halen.

Super! en :D je hebt gelijk wat betreft m'n laatste vraag, dat was mijzelf ook niet helemaal duidelijk (nvm dus :o)

Het printen ga ik laten exporteren naar een aparte Excel tab met een mooie opmaak.

Mijn vragen zijn beantwoord en ik kan verder :)

Harstikke bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan