Textbox edit nr. 2

Status
Niet open voor verdere reacties.

ColdDeath

Gebruiker
Lid geworden
7 nov 2013
Berichten
63
Hallo,

Om door te breien op de vorige vraag:

Ik heb de volgende textboxen:

Code:
Textbox3
Textbox6
.
.
.
Textbox921
Textbox924

Als textbox3 wordt verandert dan moet er een datum worden weergegeven in textbox 1 en een tijd worden weergegeven in textbox 2. Als textbox6 wordt verandert dan moet er een datum worden weergegeven in textbox 4 en een tijd worden weergegeven in textbox 5, etc.

Dus:
Code:
nummer.textbox.datum = (i + 2) mod 3
nummer.textbox.tijd= (i + 1) mod 3
nummer.textbox.change = i mod 3

Nu heb ik geen tijd om 308 keer een textbox_change() te schrijven.

Hoe kan ik dat sneller doen?


Met vriendelijke groet,
Willie
 
Laatst bewerkt:
Je formules zijn op zijn zachts gezegd heel vreemd, maar je krijgt dan (hele wilde gok...) zoiets:
Code:
    For i = 3 To 924 Step 3
        Me("textbox" & i - 1) = Me("textbox" & i) + 1 Mod 3 'Levert dit een tijd op? Het zal wel...
        Me("textbox" & i - 2) = Me("textbox" & i) + 2 Mod 3 'Levert dit een datum op?
    Next i

Dit is dan uiteraard een functie die je aanroept vanuit de veranderende cellen. Neemt niet weg dat je elke cel nog wel naar de functie moet laten verwijzen.
 
Laatst bewerkt:
Ik wilde alleen duidelijk maken dat:
Textboxnummer voor datum + 2 altijd deelbaar is door 3.
Textboxnummer voor tijd + 1 altijd deelbaar is door 3.
Textboxnummer voor wijziging altijd deelbaar is door 3.

Hieronder is de code voor het bekijken en vergelijken van mijn excel workbook om vervolgens mijn textboxen te schrijven met gegevens.

Code:
Dim xlApp As Excel.Application
Dim swModel As Object
Dim Part As Object
Dim Onderdeel As String
Dim Datum As String
Dim Tijd As String
Dim Wijzigingen As String
Dim i As Integer
Dim a As Integer
Dim b As Integer

Private Sub UserForm_Initialize()

    Set swApp = Application.SldWorks
    Set swModel = swApp.GetFirstDocument
    Set xlApp = New Excel.Application
    Set xlApp = New Excel.Application
    xlApp.Visible = True
    Set xlWB = xlApp.Workbooks.Open("X:\PROJECTEN\WIJZIGINGEN BEHEER.xlsx")

    Onderdeel = swModel.GetTitle
    
    For h = 1 To 1048576
    
        If Not Cells(h + 2, 1).Value = "" Then
        
            If Cells(h + 2, 1).Value = Onderdeel Then
            
                k = h + 2
                
                For i = 1 To 924
                    a = i + 1
                    b = i + 2
                    
                    If b Mod 3 = 0 Then
                    Controls("TextBox" & i).Text = Cells(k, i + 1).Text
                    End If
                    
                    If a Mod 3 = 0 Then
                    Controls("TextBox" & i).Text = Cells(k, i + 1).Text
                    End If
                    
                    If i Mod 3 = 0 Then
                    Controls("TextBox" & i).Text = Cells(k, i + 1).Text
                    End If
                    
                    Controls("TextBox" & i).Locked = True
                    
                Next i
                
                h = 1048576
                
            End If
            
        Else
            If Cells(h, 1).Value = "" Then
            
                Cells(h + 1, 1).Value = Onderdeel
                
                h = 1048576
                
            End If
            
        End If
        
    Next h

    ActiveWorkbook.Save
    ActiveWorkbook.Close
    
End Sub

Wat ik wil toevoegen aan mijn userform is: wanneer één van de wijziging textboxen wordt aangepast dat er automatisch de huidige tijd en datum wordt weergegeven (in de corresponderende textboxen).
 
Laatst bewerkt:
Ik heb een work-around. Ik heb gekeken en EventHandler geprobeert te gebruiken, maar ik heb daar niet de juiste Library als referentiepunt ingesteld en ik weet ook niet welke Library ik daarvoor moet refereren.

Ik heb een knop gemaakt die zou moeten werken als EventHandler:

Code:
Private Sub CommandButton2_Click()


    For i = 3 To 924 Step 3
    
        If Not Controls("TextBox" & i) = "" Then
        
            If Controls("TextBox" & i - 1).Value = "" Or Controls("TextBox" & i - 1).Value = "" Then
            
                i = i - 2
                Controls("TextBox" & i).Locked = True
                Controls("TextBox" & i).Text = Format(Date, "dd-mm-yyyy")
                Controls("TextBox" & i).Locked = False
                
                i = i + 1
                Controls("TextBox" & i).Locked = True
                Controls("TextBox" & i).Text = Format(Time, "hh:mm")
                Controls("TextBox" & i).Locked = False
                
                i = i + 1
                
            End If
            
        End If
        
    Next i
    
End Sub
 
Laatst bewerkt:
Je doet daar een foute controle en het manipuleren van i is niet zoals het hoort. De knop is trouwens je event handler, de click is het event.
 
Code:
Private Sub UserForm_Initialize()
    Set swApp = Application.SldWorks
    Set swModel = swApp.GetFirstDocument
[COLOR="#FF0000"]    Set xlApp = New Excel.Application
    Set xlApp = New Excel.Application
[/COLOR]    xlApp.Visible = True
    Set xlWB = xlApp.Workbooks.Open("X:\PROJECTEN\WIJZIGINGEN BEHEER.xlsx")

Oeps!
 
Wat ik wil toevoegen aan mijn userform is: wanneer één van de wijziging textboxen wordt aangepast dat er automatisch de huidige tijd en datum wordt weergegeven (in de corresponderende textboxen).
Dan zul je voor elke textbox die gewijzigd kan worden een eventhandler moeten schrijven. Of een class definieren en het event onderscheppen.
 
Hallo pixcel ik heb de dubbele xlApp gewijzigd naar:

Code:
'Nieuwe instance van Excel maken.
If Excel.Application Is Nothing Then
Set myExcel = CreateObject("Excel.Application")
Else
Set myExcel = Excel.Application
End If

Hoe defineer ik een class en onderschep ik een event?

Ik heb geprobeerd wat codes toe te voegen die ik heb gevonden op google en daaruit wijzer te worden, maar ik ben er niet zeker van waar ik precies de codes moet plaatsen. Iedere keer als ik op debug klik krijg ik een foutmelding en ik weet niet hoe ik die foutmelding moet interpreteren. Zou iemand mij daar bij kunnen helpen?
 
Zie je andere topic over Afsluiten voor commentaar op je code.

Over het gebruik van classes en events met userforms is al het nodige geschreven. Google op "vba userform class event" en je vindt onder meer dit: http://spreadsheetpage.com/index.php/tip/handle_multiple_userform_buttons_with_one_subroutine/

Ik denk dat je sneller klaar bent als je die 300 eventhandlers schrijft. Kopieer deze regels 300 keer (tip: gebruik een excel formule):
Code:
Private Sub TextBox1_Change(): Call TextBoxEventhandler(1): End Sub
Private Sub TextBox2_Change(): Call TextBoxEventhandler(2): End Sub
etc
Dan kun je ze allemaal afhandelen in de procedure TextBoxEventhandler()
 
Als je ze alle 300 schrijft (idd zo klaar), zou ik niet het Change-event gebruiken, maar eerder een after/before update of exit-event, Het change-event triggert namelijk iedere wijziging in jouw TextBox
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan