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

excel VBA

Status
Niet open voor verdere reacties.

JeTu

Gebruiker
Lid geworden
10 mei 2017
Berichten
19
Hello,
Ik probeer via een for lus hetvolgende te proberen. Kan iemand mij zeggen wat er fout is.

In cel A1 staat 1, in cel A2 staat 2 en in cel A3 staat 10

Ik sta in cel A4 en wil vanuit die cel de cellen A1 to A9 vullen met resp 1,2,3,4,5,6,7,8,9,10
De code blijft hangen bij de ActiveCell en enkel A1 krijgt de waarde 10.
Heeft iemand een oplossing?
Bedankt.
Mijn code tot nu is
Sub myfill()
Dim waarde As Double
Dim eerste As Double
Dim tweede As Double
Dim laatste As Double
Dim stapgrootte As Double
Dim rijoffset As Integer


eerste = ActiveCell.Offset(-3, 0).Value
tweede = ActiveCell.Offset(-2, 0).Value
laatste = ActiveCell.Offset(-1, 0).Value
stapgrootte = tweede - eerste

For waarde = eerste To laatste Step stapgrootte
ActiveCell.Offset(-3, 0).Value = waarde
rijoffset = rijoffset + 1

Next

End Sub
 
Fout 1: de code staat niet tussen codetags
Fout 2: er is geen voorbeeldbestand.

En verder begrijp ik er niet veel van. Hoe wil je de range(A1:A9) vullen met 10 verschillende waarden? Past volgens mij niet.
 
range(A1:A9) moet hier zijn range(A1:A10). Maar u eerste opmerking staat niet tussen codetags .Daarmee begrijp ik niet wat u bedoeld.
 
Ik weet het niet zeker maar waarschijnlijk wil hij (of zij of x) zoiets.
 

Bijlagen

  • 10 getallen in 9 cellen.xlsm
    15,4 KB · Weergaven: 31
Het resultaat dat ik wens te bereiken is dat
in cel A1 het cijfer 1 komt te staan in cel A2 ,cijfer2 enz. tot in de laatst cel de laatste waarde uit de lus.
 
VenA bedoeld dat je uw code tussentags moet plaatsen.
zo bv

Code:
Sub myfill()
Dim waarde As Double 
Dim eerste As Double
Dim tweede As Double
Dim laatste As Double
Dim stapgrootte As Double
Dim rijoffset As Integer


eerste = ActiveCell.Offset(-3, 0).Value
tweede = ActiveCell.Offset(-2, 0).Value
laatste = ActiveCell.Offset(-1, 0).Value
stapgrootte = tweede - eerste 

For waarde = eerste To laatste Step stapgrootte
ActiveCell.Offset(-3, 0).Value = waarde
rijoffset = rijoffset + 1

Next 

End Sub
 
Bedankt voor de snelle reactie. Maar dit resultaat wil ik bereiken.
 
Als alles naar wens is kan je de vraag als opgelost zetten in uw eerste post.
hierbij nog een voorbeeld waarbij je enkel moet dubbelklikken in een cel.
 

Bijlagen

  • 10 getallen in 9 cellen.xlsm
    17,2 KB · Weergaven: 50
Laatst bewerkt:
Dit zou ook kunnen...of wijk ik te veel af?
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
  If target.Row > 1 Then Exit Sub
  target.Resize(10) = ([row(1:10)])
End Sub
 
het zal dan minstens zo moeten zijn want hij wil beginnen invullen, om welke reden dan ook, 3 rijen boven de geselecteerde cel.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal target As Range, Cancel As Boolean)
  If target.Row <= 3 Then Exit Sub
  target.offset(-3).Resize(10) = ([row(1:10)])
End Sub
 
Laatst bewerkt:
Bedankt voor de snelle reactie. Ik probeer VBA en toevallig heb ik die oefening gezien waarbij ze dus 3rij naar boven gaan om te starten. Het zit zo in de eerste rij staat het startgetal, in de tweede rij het tweede getal en in de derde rij staat de eindwaarde. let op tussen getal in de tweede rij en het getal in de eerste rij bepaal ik wel de stapgrootte.
Maar bij mijn voorbeeld vraag ik mij af waarom enkel in de eerste cel de waarden worden ingevoerd en de cellen eronder niet worden ingevuld. Misschien hebben jullie een verklaring.
 
Je schrijft maar 1 keer 1 gegeven weg.
Code:
ActiveCell.Offset(-3, 0).Value = waarde
 
@JeTu, wees slim en plaats zelf een bestand.
 
ActiveCell.Offset(-3, 0).Value = waarde Dit zou uiteraard de eerste waarde moeten zijn.
Daarom schrijf ik daaronder : rijoffset = rijoffset + 1
Ik Dacht dat ik hiermee iedere keer de lus herhaald wordt de rij met 1 zou zaken, maar helaas
Moet ik misschien iets schrijven als ActiveCelle.select + 1.
ActiveCelle.select + 1is maar een voorbeeld. ik zlf weet niet hoe ik verder moet aanpassen.

Nogmaals mijn code

Sub myfill()
Dim waarde As Double
Dim eerste As Double
Dim tweede As Double
Dim laatste As Double
Dim stapgrootte As Double
Dim rijoffset As Integer


eerste = ActiveCell.Offset(-3, 0).Value
tweede = ActiveCell.Offset(-2, 0).Value
laatste = ActiveCell.Offset(-1, 0).Value
stapgrootte = tweede - eerste

For waarde = eerste To laatste Step stapgrootte
ActiveCell.Offset(-3, 0).Value = waarde
rijoffset = rijoffset + 1

Next

End Sub
 
Plaats dan tenminste een voorbeeldbestand met hand matig ingevuld wat je wil.
 
Daarom schrijf ik daaronder : rijoffset = rijoffset + 1

maar je doet verder nergens iets met die waarde....
probeer het zo eens:
Code:
For waarde = eerste To laatste Step stapgrootte
ActiveCell.Offset(-3, 0).[COLOR="#FF0000"]offset(rijoffset).[/COLOR]Value = waarde
rijoffset = rijoffset + 1
Next
 
Iedereen, bedankt voor de snelle reacties. Kennis weer wat verrijkt. Bedankt
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan