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

Ik krijg de aantallen niet juist

Status
Niet open voor verdere reacties.

wieter

Terugkerende gebruiker
Lid geworden
26 jun 2009
Berichten
1.128
Op sheets(1).Cells(3, 8) staat het max. toegelaten aantal deelnemers.
Op de andere bladen, wordt in kol A, het aantal deelnemers geteld.
Afhankelijk van het resultaat van die 2 getallen, wordt op de Uform het corresponderende label gevuld.
Case1: Aantal deelnemers >= toegelaten deelnemers, label = "VOLZET"
Case2: Aantal deelnemers < toegelaten deelnemers, label = "(Max. - aantal) - plaatsen vrij"
Case3: Het betreffende tabblad bestaat nog niet, label = Max. aantal deelnemers.(wat in Sheets(1).Cells(3, 8)staat)

Case1&2: Ik krijg de aantallen niet juist berekend.
Case3: Ik krijg de IF-voorwaarde niet verwoord.

Warrige uitleg, misschien maakt de bijlage veel duidelijk.
Code:
Private Sub UserForm_Initialize()
Me.TextBox1.SetFocus
For n = 2 To Sheets.Count
    For t = 1 To 10
    If Sheets(n).Name = (Me("CheckBox" & t).Caption) Then
    If Sheets(n).Range("A:A").SpecialCells(2).Count >= Sheets(1).Cells(3, 8).Value Then
        Me("Label" & t + 10).Caption = "VOLZET"
        Me("Label" & t + 10).ForeColor = vbRed
        Me("CheckBox" & t) = False
        Me("CheckBox" & t).Enabled = False '.Locked = True
    ElseIf Sheets(n).Range("A:A").SpecialCells(2).Count < Sheets(1).Cells(3, 8).Value Then
        Me("Label" & t + 10).Caption = Sheets(1).Cells(3, 8).Value - Sheets(n).Range("A:A").SpecialCells(2).Count & " pl vrij"
        Me("Label" & t + 10).ForeColor = vbBlue
    [COLOR="#0000CD"]'ElseIf Sheets(n) = Nog niet bestaat Then
    '    Me("Label" & t + 10).Caption = Sheets(1).Cells(3, 8).Value & " pl vrij"
    '    Me("Label" & t + 10).ForeColor = vbBlue[/COLOR]   
    End If
    End If
    Next t
Next n
End Sub
 

Bijlagen

  • Naar juiste tabblad (3).xlsm
    38,5 KB · Weergaven: 34
Gedeeltelijk opgelost.
De aantallen klopten niet, omdat de koptekst van Kolom A ook werd meegeteld.

Blijft het probleem dat wanneer een tabblad nog niet bestaat de labels moeten gevuld worden met het Max. toegelaten deelnemers.
Hoe kan ik excel laten weten dat een blad nog niet bestaat?
 

Bijlagen

  • Naar juiste tabblad (3).xlsm
    38,4 KB · Weergaven: 33
Als Sh een string is met de naam van een sheet:
Code:
If Evaluate("iserror(" & Sh & "!A1)") Then ...
 
Bedankt Tim voor de inbreng, maar ook jouw voorstel werkt niet.
Ik denk, dat ik bij de eigenschappen van de labels, bij "Caption" een formule moet zetten die verwijst naar Blad 1 Range H3
Maar ook dat krijg ik niet klaar.
 
Geraak je hiermee verder?
Code:
Private Sub CheckBox10_Click()
Dim wsTest As Worksheet
Dim strSheetName As String
strSheetName = CheckBox10.Caption
Set wsTest = Nothing
On Error Resume Next
Set wsTest = ActiveWorkbook.Worksheets(strSheetName)
On Error GoTo 0
 If wsTest Is Nothing Then
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = strSheetName
Sheets(strSheetName).Activate
End If
End Sub
 
Het lijkt erop dat jouw bestandje corrupt is. Als ik deze code uitvoer in een nieuw bestand dan gaat het goed. Nb je hebt die tweede lus niet nodig zoals ik ook al in een vorige vraag van je heb laten zien.

Code:
Private Sub UserForm_Initialize()
For t = 1 To 10
  If IsError(Evaluate("'" & Me("CheckBox" & t).Caption & "'!A1")) Then
    Me("Label" & t + 10).Caption = Blad1.[h3].Value & " pl vrij"
    Me("Label" & t + 10).ForeColor = vbBlue
    Else
      If Sheets(Me("CheckBox" & t).Caption).Range("A:A").SpecialCells(2).Count >= Blad1.[h3].Value + 1 Then
        Me("Label" & t + 10).Caption = "VOLZET"
        Me("Label" & t + 10).ForeColor = vbRed
        Me("CheckBox" & t) = False
        Me("CheckBox" & t).Enabled = False '.Locked = True
       Else
        Me("Label" & t + 10).Caption = Blad1.[h3].Value + 1 - Sheets(Me("CheckBox" & t).Caption).Range("A:A").SpecialCells(2).Count & " pl vrij"
        Me("Label" & t + 10).ForeColor = vbBlue
      End If
  End If
Next t
End Sub
 
Super VenA, perfect.
Ik had die tweede lus nog niet weg gelaten, omdat ik de opbouw van jouw code nog aan het doorgronden was.
Als ik de syntax onder de knie heb, zal ik ze zeker gebruiken.
Extra bedankt voor de moeite!!!

Ook Dotchie bedankt voor jouw inbreng (het bestuderen waard!)
 
@ VenA
Ik ga nu proberen de "Evaluate-functie" in het tweede deel van de code te gebruiken.
nb. Ik snap echter de syntax nog niet volledig.
 
Gelukt!!!
Op één detail na
Om de noodzakelijke voorloop nul in telefoonnummers zichtbaar te houden,
maak ik er tekst van in de code.
Dit lukt nu niet meer.
Wat doe ik mis in het rode gedeelte van de code?
Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
For j = 1 To 10
  If Me("CheckBox" & j) = True Then
    If IsError(Evaluate("'" & Me("CheckBox" & j).Caption & "'!A1")) Then
      Sheets.Add(, Sheets(Sheets.Count)).Name = Me("CheckBox" & j).Caption
      With ActiveSheet
        .Cells(1).Resize(, 5) = Split("Voornaam Achternaam Adres pc&Plaats Telefoon")
        .Cells(2, 1).Resize(, 5) = Array(TextBox1.Value, TextBox2.Value, TextBox3.Value, TextBox4.Value, TextBox5.Value)
        .Cells(1).Resize(, 5).Interior.ColorIndex = 15
        .Cells(1).Resize(, 5).Borders.Weight = xlThin
        [COLOR="#FF0000"].Cells(2, 5).NumberFormat = "@"[/COLOR]       
        .Columns.AutoFit
        Sheets(1).Select
      End With
     Else
     With Sheets(Me("CheckBox" & j).Caption)
      .Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 5) = Array(TextBox1.Value, TextBox2.Value, TextBox3.Value, TextBox4.Value, TextBox5.Value)
      .Columns.AutoFit
      [COLOR="#FF0000"].Columns(5).NumberFormat = "@"[/COLOR]
     End With
    End If
  End If
Next j
Unload Me
Application.ScreenUpdating = True
End Sub
 
Ondertussen opgelost.
Dank aan alle helpers!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan