Stel ik heb 2 bladen: blad1 en blad2 op blad1 bevind zich een cel bijv C5 Nu wil ik dat als ik op een knop druk op blad1 dat de waarde van C5 in blad2 komt te staan in cel D5 Als ik nu weer naar blad1 ga en ik verander het getal in C5 in een ander getal en ik druk weer op die knop op blad1 dan moet het nieuwe getal in C5 onder het getal in D5 komen. Dus op D6. Hoe kan ik dit in een macro maken?
Je hebt toch een makro recorder? 
Verder denk ik dat je meer zoekresultaten krijg in Google als je gaat zoeken op VBA in plaats van VBS.
Verder denk ik dat je meer zoekresultaten krijg in Google als je gaat zoeken op VBA in plaats van VBS.
[ Voor 66% gewijzigd door gorgi_19 op 25-01-2004 21:12 ]
Digitaal onderwijsmateriaal, leermateriaal voor hbo
Ja okee, maar die gaat niet 1 naar onder.. ik doe nu dit:
Sub Macro1()
Sheets("Blad2").Select
Range("C5:F5").Select
Selection.Copy
Range("C6:F6").Select
ActiveSheet.Paste
End Sub
Alleen nublijft hij in dezelfde cellen en hij moet dus 1 naar onder gaan en dat lukt niet! Waar moet ik opzoeken dan: add row of add cell of ?? Ik kan echt niks vinden.
Sub Macro1()
Sheets("Blad2").Select
Range("C5:F5").Select
Selection.Copy
Range("C6:F6").Select
ActiveSheet.Paste
End Sub
Alleen nublijft hij in dezelfde cellen en hij moet dus 1 naar onder gaan en dat lukt niet! Waar moet ik opzoeken dan: add row of add cell of ?? Ik kan echt niks vinden.
[ Voor 17% gewijzigd door RSD op 25-01-2004 21:14 ]
Probeer onderstaande macro eens (hiervoor moet wel in sheet2 iets in cell C5 staan....
Sub test()
Sheets(1).Range("C5:F5").Copy Sheets(2).Range("C5").End(xlDown).Offset(1, 0)
End Sub
Nog even een kleine toevoeging.
Deze macro zal uiteindelijk na een kleine 65530 toevoegingen een fout melding genereren daar je dan de maximale row bereikt hebt. Maarja, 65000+ toevoegingen zijn er heel wat
Sub test()
Sheets(1).Range("C5:F5").Copy Sheets(2).Range("C5").End(xlDown).Offset(1, 0)
End Sub
Nog even een kleine toevoeging.
Deze macro zal uiteindelijk na een kleine 65530 toevoegingen een fout melding genereren daar je dan de maximale row bereikt hebt. Maarja, 65000+ toevoegingen zijn er heel wat
[ Voor 41% gewijzigd door Pink Panther op 25-01-2004 21:42 ]
Hmm, maar hij doet het niet, er staat : verwzcht: = als error.. ik dacht dus iets van
Sub Opslaan()
Sheets("Blad2").Select
Range("C5:F5").Select
Selection.Copy
Range("C5").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Maar die doet het ook niet
Sub Opslaan()
Sheets("Blad2").Select
Range("C5:F5").Select
Selection.Copy
Range("C5").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
Maar die doet het ook niet
Sorry, ik had inderdaad een klein foutje erin.
Moet zijn:
Sub test()
Sheets(1).Range("C5:F5").Copy Sheets(2).Range("C3").End(xlDown).Offset(1, 0)
End Sub
Let wel, in cell C3 als in cell C4 op blad 2 MOET iets staan anders krijg je een foutmelding.
Moet zijn:
Sub test()
Sheets(1).Range("C5:F5").Copy Sheets(2).Range("C3").End(xlDown).Offset(1, 0)
End Sub
Let wel, in cell C3 als in cell C4 op blad 2 MOET iets staan anders krijg je een foutmelding.
Hmm.. nu doet hij het wel, maar nu paste hij de formules, het moeten eigenlijk de waardes zijn van die cellen .. iemand een idee?
Waarom staat die spatie er eigenlijk tussen en niet gewoon een enter?
Waarom staat die spatie er eigenlijk tussen en niet gewoon een enter?
[ Voor 22% gewijzigd door RSD op 25-01-2004 22:31 ]
Vraag:
Nog voordat je je bewust bent van het feit dat je iets niet weet, heeft je linker wijsvinger al op F1 gedrukt.
Hoe je de waardes plakt en niet de formules had je ook uit de help kunnen halen, maar voor het gemak..:
Antwoord:RSD schreef op 25 januari 2004 @ 22:29:
Waarom staat die spatie er eigenlijk tussen en niet gewoon een enter?
Met andere woorden: als je met VBA werkt, is het absoluut noodzakelijk dat je de volgende reflex leert:Copy method as it applies to the Range object.
Copies the range to the specified range or to the Clipboard.
expression.Copy(Destination)
expression Required. An expression that returns a Range object.
Destination Optional Variant. Specifies the new range to which the specified range will be copied. If this argument is omitted, Microsoft Excel copies the range to the Clipboard.
Bron: [Excel 2002 EN VBA online help]
Nog voordat je je bewust bent van het feit dat je iets niet weet, heeft je linker wijsvinger al op F1 gedrukt.
Hoe je de waardes plakt en niet de formules had je ook uit de help kunnen halen, maar voor het gemak..:
Visual Basic:
1
2
3
| Sheets(1).Range("C5:F5").Copy Sheets(2).Range("C3").End(xlDown).Offset(1, 0).Select ActiveCell.PasteSpecial xlPasteValues |
a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]
Hij werkt wel, maar als ik mn muis ergens anders neerzet, dan geeft ie weer een error.. terwijl volgens mij wel gewoon geselecteerd wordt. Is hiernog wat aan te doen?
Wat voor een error krijg je, en wat is je volledige code inmiddels geworden? Dan is het waarschijnlijk wel snel te vinden. Ze moeilijk is het tenslotte allemaal niet.
[offtopic]
Heb je het hier ook al gepost... heb je ondertussen al IETS zelf geprobeerd? Heb je al 1x op de F1 toets gedrukt? Heb je 1x zelf nagedacht voordat je hier met je probleem komt?
[/offtopic]
[offtopic]
Heb je het hier ook al gepost... heb je ondertussen al IETS zelf geprobeerd? Heb je al 1x op de F1 toets gedrukt? Heb je 1x zelf nagedacht voordat je hier met je probleem komt?
[/offtopic]
The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.
Voor TS, wat is nu de code die je gebruikt
De macro zou namelijk onafhankelijk moeten zijn van de plaast waar je muis zet (ofwel welke cell je geselecteerd hebt).
Indien de macro dat wel is, kan ik je niet helpen, maar dan denk ik dat je probleem is dat je geen tekst kunt overtypen van.......
De macro zou namelijk onafhankelijk moeten zijn van de plaast waar je muis zet (ofwel welke cell je geselecteerd hebt).
Indien de macro dat wel is, kan ik je niet helpen, maar dan denk ik dat je probleem is dat je geen tekst kunt overtypen van.......
Sub Opslaan()
' factuurnummer ophogen en kopieren
Sheets(2).Range("C3").Copy Sheets(2).Range("C1").End(xlDown).Offset(1, 0)
' Winst
Sheets(1).Select
Range("L29").Select
Selection.Copy
Sheets(2).Select
Range("D1").End(xlDown).Offset(1, 0).Select
ActiveCell.PasteSpecial xlPasteValues
' totaal inkoop
Sheets(1).Select
Range("L26").Select
Selection.Copy
Sheets(2).Select
Range("E1").End(xlDown).Offset(1, 0).Select
ActiveCell.PasteSpecial xlPasteValues
' contant
Sheets(1).Select
Range("H31").Select
Selection.Copy
Sheets(2).Select
Range("F1").End(xlDown).Offset(1, 0).Select
ActiveCell.PasteSpecial xlPasteValues
' teruig naar sheet 1
Sheets(1).Select
' printen
Range("A1:H31").Select
Range("H31").Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=2
' leeg maken
Range("A4:G24,J4:J24,K4:K24,G28,H27").Select
Range("G28").Activate
Selection.ClearContents
Range("A4").Select
' opslaan
ActiveWorkbook.Save
End Sub
Sub Ongedaanmaken()
Range("A4:G24,J4:J24,K4:K24,G28,H27").Select
Range("G28").Activate
Selection.ClearContents
End Sub
Deze code heb ik nu en het werkt :-) Bedankt allemaal!
Ik zit nu alleen met nog een klein probleempje. Ik moet ook een offerte programmaatje maken. Deze is hetzelfde als de factuur programma. Maar als ik nu op de button opslaan klik, moet hij die offerte opslaan in de map c:\offerte\ met als naam : %factuurnr%%bedrijfsnaam%.xls . Hierin %factuurnr% een cel met een naam en %bedrijfsnaam% ook een cel met een naam. Als ik dit heb, ben ik klaar. Ik heb al gezocht op het beforesave event , maar de vb editor zegt dat hij dat niet kent
misschien komt het omdat het voor excel 97 is?
Iemand een idee hoe dit te doen?
' factuurnummer ophogen en kopieren
Sheets(2).Range("C3").Copy Sheets(2).Range("C1").End(xlDown).Offset(1, 0)
' Winst
Sheets(1).Select
Range("L29").Select
Selection.Copy
Sheets(2).Select
Range("D1").End(xlDown).Offset(1, 0).Select
ActiveCell.PasteSpecial xlPasteValues
' totaal inkoop
Sheets(1).Select
Range("L26").Select
Selection.Copy
Sheets(2).Select
Range("E1").End(xlDown).Offset(1, 0).Select
ActiveCell.PasteSpecial xlPasteValues
' contant
Sheets(1).Select
Range("H31").Select
Selection.Copy
Sheets(2).Select
Range("F1").End(xlDown).Offset(1, 0).Select
ActiveCell.PasteSpecial xlPasteValues
' teruig naar sheet 1
Sheets(1).Select
' printen
Range("A1:H31").Select
Range("H31").Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=2
' leeg maken
Range("A4:G24,J4:J24,K4:K24,G28,H27").Select
Range("G28").Activate
Selection.ClearContents
Range("A4").Select
' opslaan
ActiveWorkbook.Save
End Sub
Sub Ongedaanmaken()
Range("A4:G24,J4:J24,K4:K24,G28,H27").Select
Range("G28").Activate
Selection.ClearContents
End Sub
Deze code heb ik nu en het werkt :-) Bedankt allemaal!
Ik zit nu alleen met nog een klein probleempje. Ik moet ook een offerte programmaatje maken. Deze is hetzelfde als de factuur programma. Maar als ik nu op de button opslaan klik, moet hij die offerte opslaan in de map c:\offerte\ met als naam : %factuurnr%%bedrijfsnaam%.xls . Hierin %factuurnr% een cel met een naam en %bedrijfsnaam% ook een cel met een naam. Als ik dit heb, ben ik klaar. Ik heb al gezocht op het beforesave event , maar de vb editor zegt dat hij dat niet kent
Iemand een idee hoe dit te doen?
Visual Basic:
En als je het niet met F1 kunt vinden, kun je altijd nog Google proberen... Kom op, RSD, een bééétje meer je best doen! 1
2
3
| Private Sub Workbook_BeforeSave() '[vul hier uw code in...]' End Sub |
[ Voor 13% gewijzigd door KingRichard op 26-01-2004 17:12 ]
a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]
@ TS:
Die macro zal wel een leuk flikkerbeeld geven.
Doordat je telkens een cell / worksheet selecteert, gaat de macro natuurlijk constant omschakelen tussen de twee sheets. In principe moet je dit voor twee redenen voorkomen.
Ten eerste, je krijgt door de select het telkens wisselen van sheet1 -> sheet2 en weer naar sheet waardoor er een flikker effect ontstaat.
Ten tweede omdat het relatief langzaam is. Nu zal dit voor jou niet zo'n probleem zijn, maar als je bij wijze van spreke ettelijke duizende toevoegingen in een paar minuten zou doen (bijvoorbeeld middels een ander uit te voeren macro), dan zou jouw macro veel te traag worden.
Maar dit even terzijde.
Ik begrijp nu in ieder geval dat de bedoeling is dat je hiermee facturen gaat maken. Waarom download je niet gewoon ergens zoiets. Als je eens googled zul je zien dat hiervoor reeds menig workbook gemaakt is en daarin zitten al je opties verwerkt of zijn met kleine aanpassingen erin te krijgen. Dit is dan natuurlijk wel niet je eigen programma, maar waarom het wiel opnieuw uitvinden als het al tig duizend jaar geleden uitgevonden is
Die macro zal wel een leuk flikkerbeeld geven.
Doordat je telkens een cell / worksheet selecteert, gaat de macro natuurlijk constant omschakelen tussen de twee sheets. In principe moet je dit voor twee redenen voorkomen.
Ten eerste, je krijgt door de select het telkens wisselen van sheet1 -> sheet2 en weer naar sheet waardoor er een flikker effect ontstaat.
Ten tweede omdat het relatief langzaam is. Nu zal dit voor jou niet zo'n probleem zijn, maar als je bij wijze van spreke ettelijke duizende toevoegingen in een paar minuten zou doen (bijvoorbeeld middels een ander uit te voeren macro), dan zou jouw macro veel te traag worden.
Maar dit even terzijde.
Ik begrijp nu in ieder geval dat de bedoeling is dat je hiermee facturen gaat maken. Waarom download je niet gewoon ergens zoiets. Als je eens googled zul je zien dat hiervoor reeds menig workbook gemaakt is en daarin zitten al je opties verwerkt of zijn met kleine aanpassingen erin te krijgen. Dit is dan natuurlijk wel niet je eigen programma, maar waarom het wiel opnieuw uitvinden als het al tig duizend jaar geleden uitgevonden is
Pagina: 1