VBA compileerfout

Status
Niet open voor verdere reacties.

Nico84

Gebruiker
Lid geworden
21 jul 2011
Berichten
191
In onderstaande code wordt op het subform in het veld txtAantal de waarde 1 geplaatst.
Graag wil ik txtAantal vervangen door iVeldmutatie

Maar krijg het maar niet voor elkaar

Huidige code
Code:
Private Sub cmd1_Click()

Dim iVeldmutatie As String
iVeldmutatie = Me.txtVeldmutatie

If Nz(Me.frmSubArtikelregels.Form!txtAantal.Value, 0) = 0 Then
    Me.frmSubArtikelregels.Form!txtAantal.Value = 1
End If

End Sub

Moet worden, maar werkt niet
Code:
Private Sub cmd1_Click()

Dim iVeldmutatie As String
iVeldmutatie = Me.txtVeldmutatie

If Nz(Me.frmSubArtikelregels.Form! & iVeldmutatie & .Value, 0) = 0 Then
    Me.frmSubArtikelregels.Form! & iVeldmutatie & .Value = 1
End If

End Sub
 
Ik heb werkelijk geen idee wat je probeert te bereiken. Wellicht dat een voorbeeldje de mist wat kan doen optrekken :).
 
Voorbeeldje bijgevoegd.

Heb 3 velden V1, V2 en V3. Nu werken de numerieke knoppen alleen op veld V1.
Deze moeten ook werken op de andere velden.

Had bedacht om de veldnaam in het tekstveld te plaatsen en deze dan op te nemen in de vba code.

Code:
If Nz(Me.frmArtikelregels.Form!txtV1.Value, 0) = 0 Then
txtV1 te vervangen door naam in het tekstveld. (iVeldnaam = Me.txtVeldnaam)
 

Bijlagen

Laatst bewerkt:
En wat heeft je bezield om dat op een subformulier te zetten?
 
Omdat ik dat (zie #4) dus nooit zou doen, zeker niet als het niet nodig is, hier een oplossing op het formulier zelf. Die krijg je vast wel omgebouwd naar een variant met subformulier :).
 

Bijlagen

De waarde wordt niet geplaatst in het tekstveld.
Hij geeft de error op .text = s

Voor het subformulier:
De bedoeling is dat dit op een tablet komt te draaien.
Door een subformulier te gebruiken kunnen de knoppen ernaast.
Zit wat krap met ruimte.
 
Door een subformulier te gebruiken kunnen de knoppen ernaast.
Dat moet je eens uitleggen, want dat riekt naar Hans Klok. Als ik een formulier maak, is dat per definitie breder als een subformulier op dat formulier. Knoppen op het subformulier, of knoppen op het hoofdformulier zijn op beiden even breed. En toch krijg jij een formulier met subformulier smaller als een formulier zonder subformulier? Pure magic!
 
Gaat niet om de breedte, maar om de hoogte.
Door knoppen in de koptekst te zetten verlies ik geen kostbare hoogte.
Knoppen in een doorlopend formulier in de detail sectie werkt niet.

Had je nog tijd gehad om naar de error te kijken?
Of was je zo overdonderd door mijn magische kunsten :eek:
 

Bijlagen

  • vrb.JPG
    vrb.JPG
    48,9 KB · Weergaven: 44
Ik kan de fout niet reproduceren. Ik heb de knoppen zowel in doorlopende formulier gezet als in het hoofdformulier, en beiden werken. Weliswaar de knoppen op het hoofdformulier alleen op het hoofdformulier, maar het werkt gewoon.
Overigens hoop ik voor je dat de macro's en procedures etc. op een tablet ook werken; ik heb geen Microsoft tablet dus ik kan dat niet testen. En op andere platforms gaat het uiteraard sowieso niet werken. Zelf zou ik nooit een doorlopend formulier gebruiken bij een tablet, maar een popup formulier dat de waarden wegschrijft (komt dat enkelvoudige formulier weer terug) en de resultaten in een keuzelijst laten zien, of eventueel een doorlopend formulier. Ontwerpen voor een tablet is nu eenmaal iets totaal anders als voor een pc of laptop.
 
Thuis geprobeerd en daar werkt het gewoon :cool:
Alleen weet ik niet hoe ik het omgebouwd krijg icm het subformulier.

Heb nu het een en ander geprobeerd maar blijf tegen het probleem aanlopen dat
screen.previouscontrol de naam van het subformulier onthoud en niet die van het veld op het subformulier

Kan je hier nog even mee helpen Octafish
 
Moet ik nog even naar kijken; ik denk dat je een object moet gebruiken.
 
Op deze manier plaatst hij wel de waarde in het veld van het cijfer wat ik intoets,
maar klik ik op een ander getal gebeurt er niks.
Het veld op het subform moet ik dan eerst aanklikken (focus geven), voordat ik een ander cijfer in kan toetsen


Code:
Function Nummerbord(waarde As Integer)
Dim ctl As Control
Dim obj As Object
Dim s As String

    On Error Resume Next
    Set ctl = Me.Form.Controls(Screen.PreviousControl.Name).Form.ActiveControl
    With ctl
        .SetFocus
        s = .Text
        s = s & waarde
        .Text = s
        .SelStart = Len(s)
    End With
End Function
 
Door Screen.PreviousControl.SetFocus onderaan te zetten lijkt het voor mij opgelost te zijn.
Misschien wil je er nog op schieten OctaFish?

Code:
Function Nummerbord(waarde As Integer)
Dim ctl As Control
Dim s As String

    On Error Resume Next
    Set ctl = Me.Form.Controls(Screen.PreviousControl.Name).Form.ActiveControl
    With ctl
        s = .Text
        s = s & waarde
        .Text = s
        .SelStart = Len(s)
    End With
Screen.PreviousControl.SetFocus
   
End Function
 
Als het werkt, werkt het :). Zelf zou ik het dus zo niet oplossen (noch met een 'toetsenbord' op het subformulier, noch met een 'toetsenbord' op het hoofdformulier maar met een popup formulier dat je vult/koppelt aan het vertrekkende veld.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan