VBA, 'gegevens weg schrijven' automatisch onder elke cel

Status
Niet open voor verdere reacties.
Harry, oké gelukkig, onderstaande is voor een deel opgelost.
Het ''automatisch updaten niet''.

Als ik in VBA de hoogte invul dan wordt deze waarde naar kolom E weg weggeschreven.
Dan moet kolom F daarop reageren d.v.m. van de wat als functie.
Maar nu doet excel niet wat ik zeg.
Als ik dezelfde waarde van de hoogte handmatig invul in excel dan doet kolom F wel wat ik zeg.

In de bijlage een voorbeeld.
Test 1 (VBA) doet kolom F het niet.
Test 2 (Met de hand) doet kolom F het wel.

Hoe kan dit?
 

Bijlagen

Een array geeft een string retour.
Code:
With Sheets("Invulgegevens").Cells(78, 2).End(xlUp)
  .Offset(1).Resize(, 4) = Array(txt3naamobject, CDec(txt3lengte), CDec(txt3breedte), CDec(txt3hoogte))
  .Offset(1, 5).Resize(, 3) = Array(CVar(Aantalopvangertab42), CVar(Hoogteopvangertab43), JaenNeetab44)
End With
Bekijk dit ook eens: uitkomst is altijd een nul (0).
formule in kolom L :
Code:
 "Beveiligen met opvangleidingen rondom de randen op het [COLOR=#FF0000]gebouw[/COLOR]" met cel A149: Beveiligen met opvangleidingen rondom de randen op het [COLOR=#FF0000]object[/COLOR]
 
Harry,

Ik mag jou weer bedanken! Heel erg fijn dat het nu werkt.

Puur uit interesse.
Wat bedoel je precies met ''Een array geeft een string retour.'' ?
En wat houdt Cdec en Cvar precies in?

Ja dat klopt over kolom L. Dat is de bedoeling.

Grt Jasper
 
Harry,

Ik heb een melding gemaakt dat als een tekstveld niet is ingevuld. Zie onderstaand.
Nu wil ik een melding maken dat de gebruiker geen punt moet gebruiken maar een komma. Bijvoorbeeld 3,5 i.p.v. 3.5
Ik wou dat als volgt doen: "." (MsBox) "Gebruik komma"
Maar dit doet het niet.
Voor jou waarschijnlijk heel simpel wat ik vergeet te doen?

If Trim(Me.txt3hoogte.Value) = "" Then
Me.txt3hoogte.SetFocus
Beep
MsgBox "Alle velden moet ingevuld zijn"
Exit Sub
End If
 
Je kan de gebruiker ook gewoon z'n gang laten gaan en de code aanpassen met:
Code:
textbox1 = replace(textbox1, ".", ",")
 
Hai Harry,

Als ik eerlijk begrijp ik niet zo goed hoe jij dit bedoelt...?
En hoe het uiteindelijk er moet zien.

textbox1 = replace(textbox1, ".", ",")
 
Dag Jasper,

Nu maakt het niet uit wat de gebruiker invult (komma of punt).
Code:
With Sheets("Invulgegevens").Cells(78, 2).End(xlUp)
  .Offset(1).Resize(, 4) = Array(txt3naamobject, CDec(Replace(txt3lengte, ".", ",")), CDec(Replace(txt3breedte, ".", ",")), CDec(Replace(txt3hoogte, ".", ",")))
  .Offset(1, 5).Resize(, 3) = Array(CVar(Aantalopvangertab42), CVar(Hoogteopvangertab43), JaenNeetab44)
End With
 
Jaa, het werkt. Super!!

Harry,

Ander vraag, ik weet niet of het kan hoor.
Als ik in tab 3 sta en hoogte > 2,5 invul. Dan is vraag 2 en 3 n.v.t.
De gebruiker moet nu zelf n.v.t. selecteren dmv de combobox.
Kan dit ook automatisch ingevuld worden?

Grten
 

Bijlagen

Mooi,

Code:
Private Sub txt2hoogte_Change()
If txt2hoogte <> "" Then
  Aantalopvangertab32.ListIndex = IIf(CDec(Replace(txt2hoogte, ".", ",")) > 2.5, 1, -1)
  Hoogteopvangertab33.ListIndex = IIf(CDec(Replace(txt2hoogte, ".", ",")) > 2.5, 1, -1)
End If
End Sub
 
Hey Harrry,

Het werkte perfect. Maar het geeft nu een foutmelding.
Waarschijnlijk iets met end if/end with/end sub verkeerd staan? Ik heb al naar de foutmelding gekeken maar ik kan het niet zo vinden.
Ik kan geen bijlagen uploaden, geeft namelijk een probleem aan. Misschien te groot? Daarom een printscreen.

Nog een vraag
Mijn VBA blad bestaat uit meerdere tabbladen.
Nu moet de gebruiker met de muis aanklikken om naar een volgende tabblad te switchen.
Ik wil eigenlijk hiervoor in de plaats 2 commandbuttons aanmaken. 1 voor tabblad verder en 1 voor tabblad terug.
Heb jij hier nog een standaard code voor?

Grtjes
 

Bijlagen

  • Fout1 8-5-15.jpg
    Fout1 8-5-15.jpg
    97 KB · Weergaven: 63
Je foutmelding hebben we behandeld in #27.
Voor tab3.
Code:
With Sheets("Invulgegevens").Cells(78, 2).End(xlUp)
  .Offset(1).Resize(, 4) = Array(txt2naamobject, CDec(Replace(txt2lengte, ".", ",")), CDec(Replace(txt2breedte, ".", ",")), CDec(Replace(txt2hoogte, ".", ",")))
  .Offset(1, 5).Resize(, 4) = Array(CVar(Aantalopvangertab32), CVar(Hoogteopvangertab33), JaenNeetab34, JaenNeetab35)
End With

Je tweede vraag: het ligt er aan in welk blad je de button wil plaatsen. (- of +)
Code:
Private Sub CommandButton1_Click()
 Sheets(Me.Index [COLOR=#FF0000]+ 1[/COLOR]).Activate
End Sub
 

Bijlagen

Jaaaa, de fout is er uit.
Maar ik weet nu wat ik verkeerd heb gedaan, dankzij jou!

Tweede vraag over die tabbladen, zie bijlage.
Ik heb al e.e.a. voorbereid.
Waarschijnlijk een kleintje foutje?

Jasper
 

Bijlagen

Laatst bewerkt:
Ik wist niet dat het om de 'multipage' tabjes ging.
Code:
multipage1.value = multipage1.value + 1
 
Excuus Harry, mijn fout. Ik was niet duidelijk genoeg.
Ik bedoelde de tabbladen in mijn project gegevens formulier in VBA.
Hoe worden dan de programmeercodes?
Voor de onderstaande buttons?

'In tab 3
Private Sub Van3naar4_Click()
....?
End Sub

'In tab 4
Private Sub Van4naar5_Click()
....?
End Sub

'In tab 4
Private Sub Van4naar3_Click()
....?
End Sub

'In tab 5
Private Sub Van5naar4_Click()
....?
End Sub
 
Dat zou na mijn voorbeeld niet moeilijk moeten zijn toch?
 
Jij hebt helemaal gelijk Harry. Stom foutje.
Het zal wel aan het tijdstip liggen.

Bedankt weer tot zover.
 
Hai Harry,

Eén van de laatste vragen...
Als de gebruiker hoogte > 2.5 invult dan worden 2 vragen automatisch op n.v.t. gezet.
Nu wil ik het uitbreiden als de gebruiker hoogte < 0.5 invult dan moeten 3 vragen automatisch op n.v.t. gezet. Dit is 1 vraag meer dan de onderstaande code.

Private Sub txt2hoogte_Change()
If txt2hoogte <> "" Then
Aantalopvangertab32.ListIndex = IIf(CDec(Replace(txt2hoogte, ".", ",")) > 2.5, 1, -1)
Hoogteopvangertab33.ListIndex = IIf(CDec(Replace(txt2hoogte, ".", ",")) > 2.5, 1, -1)
End If
End Sub


Ik heb het zelf al geprobeerd, kom er nog niet uit helemaal uit. Ik dacht aan onderstaande code. Maar in regel 1 en 2 zit een fout.
Samenvattend: - hoogte > 2.5 dan 1e en 2e vraag op n.v.t.
- hoogte < 0.5 dan alle 3 vragen op n.v.t.

Private Sub txt2hoogte_Change()
If txt2hoogte <> "" Then
Aantalopvangertab32.ListIndex = IIf(CDec(Replace(txt2hoogte, ".", ",")) < 0.5, > 2.5, 1, -1)
Hoogteopvangertab33.ListIndex = IIf(CDec(Replace(txt2hoogte, ".", ",")) < 0.5, > 2.5, 1, -1)
JaenNeetab44.ListIndex = IIf(CDec(Replace(txt3hoogte, ".", ",")) < 0.5, 1, -1)
 
Code:
Private Sub txt2hoogte_Change()
   Aantalopvangertab32.ListIndex = 1 + 2 * (Val(txt2hoogte) <= 2.5)
   Hoogteopvangertab33.ListIndex = Aantalopvangertab32.ListIndex
End Sub
 
Dat is een mooie om te onthouden @snb "= 1 + 2 * (Val(txt2hoogte) <= 2.5)".

Ik had het nog getest met 'Val' en dacht dat het moest werken, maar in mijn test bleef iedere keer bij debuggen de value 'leeg'.
Door steeds maar fouten te krijgen met andere probeersels kreeg ik pas in de gaten dat ik de textboxnaam zonder een 2 te hebben geschreven.
Daarna bleek de code met 'Replace' goed te werken.
Dus dat mag Jasper nu ook veranderen naar 'Val'.

Code:
With Sheets("Invulgegevens").Cells(78, 2).End(xlUp)
  .Offset(1).Resize(, 4) = Array(txt2naamobject, Val(txt2lengte), Val(txt2breedte), Val(txt2hoogte))
  .Offset(1, 5).Resize(, 4) = Array(CVar(Aantalopvangertab32), CVar(Hoogteopvangertab33), JaenNeetab34, JaenNeetab35)
End With
 
Hallo heren,

ik heb het aangepast. En gewijzigde code werkt.

Volgens mij is de vraag dan nog niet beantwoord.
Als txt2hoogte > 2,5 dan worden de onderstaande invulvelden automatisch op n.v.t. gezet (dit werkt)
Aantalopvangertab32
Hoogteopvangertab33


En als txt2hoogte < 0,5 dan moeten onderstaande invulvelden automatisch op n.v.t. worden gezet (dit werkt nog niet).
Aantalopvangertab32
Hoogteopvangertab33
JaenNeetab34

Hoe kan ik dit verwerken in onderstaande code?

Private Sub txt2hoogte_Change()
Aantalopvangertab32.ListIndex = 1 + 2 * (Val(txt2hoogte) <= 2.5)
Hoogteopvangertab33.ListIndex = Aantalopvangertab32.ListIndex
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan