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

Code doet niet wat ik wil

Status
Niet open voor verdere reacties.

ExcelAmateur

Terugkerende gebruiker
Lid geworden
25 aug 2010
Berichten
3.333
Ik probeer een stukje code aan te passen maar het doet niet wat ik wil.
Wat doet de 1 hier sn(1, J)

Het gebruik van GoTo zal wel niet goed zijn.

Het is de bedoeling als de inhoud van een textbox op een formulier niet gelijk is aan sn, dan de text in het rood.
Alle text word rood en dat is niet de bedoeling.
Code:
Sub CijferControle1()
sn = Blad5.Range("J16:AY16")
  For J = 1 To 42
    If Me("TextBox" & J).Visible = False Then GoTo 1
    If Me("TextBox" & J).Value = sn(1, J) Then  'TextBox inhoud controleren
      GoTo 1
    Else
      Me("textBox" & J).ForeColor = &HFF&        'Kleur rood indien niet gelijk
    End If
1
  Next
End Sub

Zo geprobeerd maar werkt ook niet, hij blijft de tekst in het rood zetten.
Code:
Sub CijferControle1()
sn = Blad5.Range("J16:AY16")
  For J = 1 To 42
    If Me("TextBox" & J).Visible = False Then GoTo 1
    If Me("TextBox" & J).Value = sn(1, J) Then 'TextBox inhoud controleren
      Me("textBox" & J).ForeColor = &H80000008  'Zwart
    Else
      Me("textBox" & J).ForeColor = &HFF&       'Kleur rood indien niet gelijk
    End If
1
  Next 
End Sub
 
Laatst bewerkt:
EA,

De code verdient inderdaad geen schoonheidsprijs de onderstaande code doet het zelfde maar wat netter geprogrammeerd.

Code:
Sub CijferControle1()
sn = Blad5.Range("J16:AY16")
  For J = 1 To 42
    If Me("TextBox" & J).Visible = True Then
        If Me("TextBox" & J).Value <> sn(1, J) Then  'TextBox inhoud controleren
            Me("textBox" & J).Font.Color = vbRed     'Kleur rood indien niet gelijk
        Else
            Me("TextBox" & J).Font.Color = vbBlack
        End If
    End If
  Next
End Sub

Verder heb ik de Forecolor vervangen door de Font.Color zodat alleen de text wordt gekleurd.
sn is een multidimensionale matrix als je een range opgeeft aan zo'n matrix verwacht hij twee dimensies.
Bijvoorbeeld sn = range("A1:C3") met drie regels en op iedere regel drie cellen.
Als je maar een regel aangeeft in de range gaat de matrix toch uit van twee dimensies waarbij de eerste
dimensie dus standaard een 1 is.

Veel Succes.
 
Elsendoorn2134,

Hartelijk bedankt voor het aanpassen en de uit leg over de 1.
De code ziet er inderdaad veel beter uit.

Hij geeft een fout melding al bij de eerste regel van Font.Color dat de eigenschap of methode niet word onder steunt.
 
Het is me gelukt, moest de TextBox.Value met 1 vermenigvuldigen.
Voor de kleur moest ik ook ForeColor gebruiken.

Hier de Code zoals hij nu is.
Code:
Sub CijferControle1()
sn = Blad5.Range("J16:AY16")
  For J = 1 To 42
    If Me("TextBox" & J).Visible = True Then
        If Me("TextBox" & J).Value [COLOR="#FF0000"]* 1[/COLOR] = sn(1, J) Then 'TextBox inhoud controleren
            Me("textBox" & J).ForeColor = vbBlack
        Else
            Me("TextBox" & J).ForeColor = vbRed         'Kleur rood indien niet gelijk
        End If
    End If
  Next
End Sub

Iniedergeval bedankt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan