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

opslaan telkens als een cel van kolom H is ingevuld

Status
Niet open voor verdere reacties.

Gerald Baalhuis

Gebruiker
Lid geworden
14 jan 2006
Berichten
369
Ik heb bijgaande werkmap gemaakt.
Ik zou graag willen dat, zodra op een regel kolom H ingevuld is (mbv keuzelijst) het bestand wordt opgeslagen en de cursor naar kolom A op de volgende regel gaat.

Gerald
 

Bijlagen

Gerald,

Neem met de macro recorder je gewenste macro op en bewerk die dan.
 
Beste Superzeeuw,

Als ik het met de marco recorder doe, wordt in allle cellen telkens hetzelfde ingevoerd.
Eigenlijk zou je met een stukje vba moeten kijken (denk ik) of er iets ingevuld is in de cel van kolom H van de huidige regel, als dat zo is dan opslaan.

Gerald
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If target.column=8 then
     activeworkbook.save
     application.goto cells(target.row+1,1)
  End If
End Sub
 
Zie voorbeeld.

@ snb,

Hahahaha.

Bijna hetzelfde maar jij hebt het opgelost met application.goto

Moet ik meer gebruik van maken.
Hè heb ik toch nog select gebruikt, stom van mij.
 

Bijlagen

Laatst bewerkt:
Heren,

Mijn dank is wederom groot, snapte ik maar es wat meer van VBA :(

Gerald

Als jullie nog een (voor mij dan) uitdaging willen:

de kolom C ('scancode') in werkblad 'te ontblisteren' wordt gevuld via een scanner of handmatige invoer.

Als de invoer niet herkend wordt door de verticaal zoeken formule in kolom D ('geneesmiddel') zou werkblad 'data' geopend moeten worden, de ingevoerde 'onbekende' scancode in de 1e lege cel in kolom E van blad Data geplaatst moeten worden, vervolgens handmatig de naam van het geneesmiddel ingeveord moeten worden ingevuld en een 'J'in de kolom ontblisteren. Daarna weer terug naar blad 'te ontblisteren' naar de cel waarin het laatst de onbekende scancode is ingevoerd en dan zou verticaal zoeken het 'nieuwe middel' moeten vinden. Daarna vult de gebruiker de rest van de cellen op de regel in en treedt zodra de cel in kolom J is ingevuld (sorry, verkeerde bestand geplaatst) jullie VBa in werking.
 
Wat is de hoogte van je automatiseringsbudget ?
Eigenlijk ontneem ik je liever geen uitdagingen.

@Superzeeuw

In dit geval wordt VBA-gebruikt om de userinterface te beïnvloeden. Dan hebben we helaas met select, activate en goto van doen. De select-methode is dan even goed (of slecht) als application.goto.
In zo'n geval zou een userform echter uiteindelijk mijn voorkeur hebben.
 
Laatst bewerkt:
Haha, een budget heb ik (nog niet) toegewezen gekregen, ik werk nog maar net voor deze werkgever en wat ik tot nu toe gebrouwen heb ik Excel doet ze al verbaasd staan, net zoals de echte die-hards van helpmij.nl mij altijd weer verbazen :).

Ik zal eerst jullie stukje VBA maar eens introduceren en nadenken over hoe ik (als apothekers-assistent met grote interesse in PC's excel e.d.) een handige koppeling kan maken tussen Excel en de apotheek software, zodat we de dingen niet twee keer hoeven te doen (want zoals in dit geval: de nieuwe middelen staan natuurlijk al wel in de databases van de apotheek-software)

Gerald
 
Probeer dit eens Gerald.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Value <> "" And Target.Offset(, 1) = "" Then
Target.Copy Destination:=Sheets("DATA").Range("E" & Sheets("DATA").Range("E65000").End(xlUp).Row + 1)
Worksheets("DATA").Activate
 End If
End Sub
Heb je savecode even uitgeschakeld, kreeg daar een foutmelding op.
 

Bijlagen

Laatst bewerkt:
Heren,

Bedankt voor jullie raadgevingen en code.
Ik heb geprobeerd ze samen te voegen, maar dan krijg ik een foutmelding.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 3 And Target.Value <> "" And Target.Offset(, 1) = "" Then
Target.Copy Destination:=Sheets("DATA").Range("E" & Sheets("DATA").Range("E65000").End(xlUp).Row + 1)
Worksheets("DATA").Activate
End If
If Target.Column = 8 Then
ThisWorkbook.Save True
Cells(Target.Row + 1, 1).Select
End If
End Sub

De foutmelding luidt: Compileerfout: Onjuist aantal argumenten of ongeldige eigenschappentoewijzing en .Save wordt gehighlighted.
 
De code staat in het ander blad.
Heb het nog iets gewijzigd, zodat de target direct op de juiste cel staat.

PS. De foutmelding van je save kwam door de 'True'.
deze moest worden verwijderd.
 

Bijlagen

Laatst bewerkt:
Harry, bedankt voor je snelle reactie, het wordt steeds beter,

Het is de bedoeling dat, als het getal of de code die in kolom C wordt ingevoerd niet voorkomt, blad "DATA"wprdt geopend, dan naar eerste lege cel in kolom E gaan, daar de bewuste cope plakken (dit gebeurt goed). Daarna moet de gebruiker op dit blad ("data") in kolom F de naam invullen en mag excel in kolom G de tekst "JA" zetten.
Daarna terug naar blad '2010' en cellen in kolommen E t/m J door gebruiker in laten vullen (kolom D wordt middels vert.zoeken() ingevuld.
Als in de cel in kolom J in dit werkblad ('2010') iets is ingevuld moet het werkblad opgeslagen worden.
Hopelijk heb ik e.e.a. duidelijk uitgelegd.

Groet,

Gerald
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan