VBA excel / loop door textboxen

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

Anoniem: 1217156

Topicstarter
ben beginnend in het verhaal VBA in Excel maar veel zoekwerk over het internet is voor mij het volgende probleem niet helemaal op te lossen..

ik probeer een formulier in elkaar te zetten met meerdere regels
op elke regel staan meerdere textboxen

ik zou graag willen dat de inhoud van de textbox in een vast excel blad wordt geimporteerd (vanuit het formulier)
omdat ik 20 regels heb wil ik niet voor elke textbox (7 stuks) en elke regel (20 regels) een regel moeten maken om hem te importeren


er zal vast een optie zijn om via een "loop" dit op te lossen maar heb dit nog niet gevonden


-----
heb het volgende om hem te importeren per regel per tekstbox
---

Private Sub b_ok_Click()

Dim lastrow As Integer

Blad5.Activate
Range("A21:I40").ClearContents
Blad5.Range("A20").AutoFilter Field:=2
lastrow = Cells(Rows.Count, 1).End(xlUp).Row
'1ste regel
Cells(lastrow + 1, 1) = data_st1.Value
Cells(lastrow + 1, 2) = data_pr1.Value
Cells(lastrow + 1, 4) = data_lg1.Value
Cells(lastrow + 1, 5) = data_kw1.Value
Cells(lastrow + 1, 7) = data_kstt1.Value
Cells(lastrow + 1, 8 ) = data_cert1.Value
Cells(lastrow + 1, 10) = data_opm1.Value

'2de regel
Cells(lastrow + 2, 1) = data_st2.Value
Cells(lastrow + 2, 2) = data_pr2.Value
Cells(lastrow + 2, 4) = data_lg2.Value
Cells(lastrow + 2, 5) = data_kw2.Value
Cells(lastrow + 2, 7) = data_kstt2.Value
Cells(lastrow + 2, 8 ) = data_cert2.Text
Cells(lastrow + 2, 10) = data_opm2.Value

'3de regel
Cells(lastrow + 3, 1) = data_st3.Value
Cells(lastrow + 3, 2) = data_pr3.Value
Cells(lastrow + 3, 4) = data_lg3.Value
Cells(lastrow + 3, 5) = data_kw3.Value
Cells(lastrow + 3, 7) = data_kstt3.Value
Cells(lastrow + 3, 8 ) = data_cert3.Text
Cells(lastrow + 3, 10) = data_opm3.Value

End Sub

-----
en dacht het volgende voor een loop
---


Private Sub b_ok_Click()

Dim v As Integer
Dim lastrow As Integer
Dim data_st As Integer
Dim data_pr As String
Dim data_lg As Integer
Dim data_kw As String
Dim data_kstt As Double
Dim data_cert As String
Dim data_opm As String


Blad5.Activate
Range("A21:I40").ClearContents
Blad5.Range("A20").AutoFilter Field:=2

v = 0

Do
v = v + 1

lastrow = Cells(Rows.Count, 1).End(xlUp).Row
Cells(lastrow + 1, 1) = data_st & (v)
Cells(lastrow + 1, 2) = data_pr & (v)
Cells(lastrow + 1, 4) = data_lg & (v)
Cells(lastrow + 1, 5) = data_kw & (v)
Cells(lastrow + 1, 7) = data_kstt & (v)
Cells(lastrow + 1, 8 ) = data_cert & (v)
Cells(lastrow + 1, 10) = data_opm & (v)
Loop Until v = 20

End Sub

---
het zal voor de expert wel enorm grappig zijn maar hoop mee te kunnen lachen met het antwoord

Alle reacties


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:34

Creepy

Tactical Espionage Splatterer

Het is denk ik een goed idee om eens te kijken naar arrays: https://www.excel-easy.com/vba/array.html . Ik gok dat dat je issues direct oplost en dat je in de toekomst met een (glim)lach kan terugkijken op dit topic ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • The_Vice
  • Registratie: Augustus 2002
  • Laatst online: 20:54
Zie 5:45 youtube.
Als je wilt verwijzen naar een control, dan dien je de control naam mee te geven a la deze manier:
code:
1
Me.Controls("Textbox" & v) ="Je waarde"
Je control-namen naar een array omzetten:
code:
1
2
Dim myControls As Variant
myControls= Array("lastrow","data_st","data_pr","data_lg","data_kw","data_kstt","data_cert","data_opm")
Dan
code:
1
2
3
4
5
For v = 1 to 20
  For Each Item in myControls
    'doe je ding
  next Item
next v

[ Voor 41% gewijzigd door The_Vice op 01-06-2019 15:01 ]