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

uitleggen hoe je aan de juiste kleurcode komt

Status
Niet open voor verdere reacties.

glda19

Terugkerende gebruiker
Lid geworden
14 jan 2008
Berichten
1.064
Kunnen jullie eens uitleggen hoe je aan de juiste kleurcode komt?
Ik weet dat dit gaat via onderstaande code

Code:
arr = Array(ComboBox2.Value, CDate(TextBox2.Value), CDate(TextBox3.Value), ComboBox1.Value)
    Blad2.ListObjects(1).ListRows.Add.Range.Resize(, 4) = arr
    frow = Application.Match(ComboBox2.Value, Blad3.ListObjects(1).ListColumns(1), 0)
    If IsError(frow) Then Blad3.ListObjects(1).ListRows.Add.Range = ComboBox2.Value
    With Blad1
        frow = Application.Match(ComboBox2.Value, .Range("A8", .Range("A" & .Rows.Count).End(xlUp)), 0)
        If IsError(frow) Then .Range("A" & .Rows.Count).End(xlUp).Offset(1) = ComboBox2.Value
    End With
 
Een kleine opmerking ooit al gehoord van correcte naamgeving wat weet je nu met commandobutton1
In de crussur vb.net hebben we geleerd dat er algemene afspraken zijn gemaakt in verband met de naamgeving van knop textboxen en listboxen ezn..
Wij leerden het als volg voor een knop vb voor de knop ok cmdOk als naam te geven. Dan ziet idereen direct over welke knop het gaat.
En ben er zeker van als je bv maanden niet meer de code hebt bekeken dat je niet weet welke knop commandobuton1 is maar met cmdOK weet je direct het over de ok knop gaat
Gelukkig is dit geen groot programma

Gaat fout na wissen van gans de lijst
Dit in de eerste regel onder with blad
Code:
Private Sub UserForm_Initialize()

    With Blad2

        ListBox1.List = .ListObjects(1).DataBodyRange.Value

        For A = 1 To 6

            Me.Controls("Label" & A).Caption = .Cells(1, A).Value

        Next A

    End With

    With Blad3

        ComboBox1.List = .ListObjects(2).DataBodyRange.Value

        ComboBox2.List = .ListObjects(1).DataBodyRange.Value

    End With

    With ListBox1

        For i = 0 To .ListCount - 1

            .List(i, 1) = Format(.List(i, 1), "dd/mm/yyyy")

            .List(i, 2) = Format(.List(i, 2), "dd/mm/yyyy")

            .List(i, 5) = Format(.List(i, 5), "0.00")

        Next

    End With
 
Laatst bewerkt door een moderator:
Kunnen jullie eens uitleggen hoe je aan de juiste kleurcode komt?
Ik weet dat dit gaat via onderstaande code

Code:
arr = Array(ComboBox2.Value, CDate(TextBox2.Value), CDate(TextBox3.Value), ComboBox1.Value)
    Blad2.ListObjects(1).ListRows.Add.Range.Resize(, 4) = arr
    frow = Application.Match(ComboBox2.Value, Blad3.ListObjects(1).ListColumns(1), 0)
    If IsError(frow) Then Blad3.ListObjects(1).ListRows.Add.Range = ComboBox2.Value
    With Blad1
        frow = Application.Match(ComboBox2.Value, .Range("A8", .Range("A" & .Rows.Count).End(xlUp)), 0)
        If IsError(frow) Then .Range("A" & .Rows.Count).End(xlUp).Offset(1) = ComboBox2.Value
    End With
Die code heeft niets, maar dan ook helemaal niets met kleuren van doen.
 
Geef A1 een kleur en vraag de waarde ervan op in het Direct venster met:
?[A1].Interior.Color

Als het gaat om een kleur via Voorwaardelijke Opmaak doe je dat zo:
?[A1].DisplayFormat.Interior.Color

Het getal dat je terug krijgt is de Long waarde van de betreffende kleur.
 
Laatst bewerkt:
Er zijn nu 2 topics met dezelfde naam.
M.a.w. @glda19 even de naam van het topic aanpassen.
@Likie74 zal niet blij met je zijn aangezien je hebt ingebroken met een vraag en opeens verder bent gegaan met deze topic onder dezelfde naam.
Mijn persoonlijke mening, niet fijn van je.:mad:
 
wat doet die code dan wel
De code kijkt of de naam die in Combobox2 staat in kolom A aanwezig is.
Zo niet, voeg dan onderaan een rij toe met de tekst van Combobox2.
 
Kan je hier iets mee?
Antwoord van ene ChatGPT.
Of het geheel klopt? Geen idee. Daar zijn de VBA specialisten voor.

### 1. **Lijn 1: `arr = Array(ComboBox2.Value, CDate(TextBox2.Value), CDate(TextBox3.Value), ComboBox1.Value)`**
- Hier wordt een array `arr` gemaakt waarin de waarden van een paar interface-elementen worden opgeslagen.
- `ComboBox2.Value`: De geselecteerde waarde uit een keuzelijst (ComboBox2).
- `CDate(TextBox2.Value)`: De waarde uit `TextBox2`, omgezet naar een datum met de functie `CDate()`.
- `CDate(TextBox3.Value)`: De waarde uit `TextBox3`, ook omgezet naar een datum.
- `ComboBox1.Value`: De geselecteerde waarde uit een keuzelijst (ComboBox1).

**Kortom:** Een array wordt aangemaakt met vier waarden (twee uit combo boxes en twee omgezette datums uit tekstvakken).

### 2. **Lijn 2: `Blad2.ListObjects(1).ListRows.Add.Range.Resize(, 4) = arr`**
- Dit voegt een nieuwe rij toe aan de eerste tabel (ListObject) op "Blad2" (een Excel-werkblad).
- `Blad2.ListObjects(1)` verwijst naar de eerste tabel op dit werkblad.
- `ListRows.Add`: Voegt een nieuwe rij toe aan de tabel.
- `.Range.Resize(, 4)`: De nieuwe rij wordt ingesteld om 4 kolommen te bevatten (het aantal items in de array).
- `= arr`: De gegevens uit de eerder aangemaakte array `arr` worden in de nieuwe rij geplaatst.

**Kortom:** De vier waarden uit de array worden toegevoegd als een nieuwe rij in de eerste tabel van "Blad2".

### 3. **Lijn 3: `frow = Application.Match(ComboBox2.Value, Blad3.ListObjects(1).ListColumns(1), 0)`**
- Deze regel probeert de rij te vinden waarin de waarde van `ComboBox2` zich bevindt in de eerste kolom van de eerste tabel op "Blad3".
- `Application.Match()` zoekt de positie van de waarde in een reeks (hier de eerste kolom van de eerste tabel op "Blad3").
- De waarde van `frow` is de positie van de gevonden waarde, of een fout (als de waarde niet wordt gevonden).

**Kortom:** Er wordt gezocht of de waarde van `ComboBox2` al bestaat in de eerste kolom van "Blad3".

### 4. **Lijn 4: `If IsError(frow) Then Blad3.ListObjects(1).ListRows.Add.Range = ComboBox2.Value`**
- Als er in de vorige stap een fout optreedt (dus als de waarde van `ComboBox2` niet werd gevonden), wordt een nieuwe rij toegevoegd aan de tabel op "Blad3" met de waarde van `ComboBox2` in de eerste kolom.

**Kortom:** Als de waarde nog niet bestaat in de tabel op "Blad3", wordt deze toegevoegd.

### 5. **Lijnen 5-9: De `With Blad1`-structuur**
Dit stuk code zoekt en voegt gegevens toe aan "Blad1" als de waarde van `ComboBox2` daar nog niet voorkomt.

- **Lijn 6:** `frow = Application.Match(ComboBox2.Value, .Range("A8", .Range("A" & .Rows.Count).End(xlUp)), 0)`
- Zoekt naar de waarde van `ComboBox2` in kolom A van "Blad1", beginnend bij cel A8 tot aan de laatste niet-lege rij.
- De waarde van `frow` is de rij waarin de waarde wordt gevonden of een fout als de waarde niet bestaat.

- **Lijn 7-9:**
- `If IsError(frow) Then .Range("A" & .Rows.Count).End(xlUp).Offset(1) = ComboBox2.Value`
- Als de waarde niet wordt gevonden, wordt de waarde van `ComboBox2` toegevoegd aan de eerste lege cel in kolom A van "Blad1" (onder de bestaande data).

**Kortom:** De waarde van `ComboBox2` wordt toegevoegd aan kolom A van "Blad1" als deze nog niet aanwezig is.

### Samenvatting
1. De code haalt gegevens op uit verschillende interface-elementen (ComboBoxes en TextBoxes).
2. Deze gegevens worden toegevoegd aan een tabel op "Blad2".
3. De code controleert of de waarde van `ComboBox2` al bestaat in de eerste tabel op "Blad3". Zo niet, dan wordt deze toegevoegd.
4. De code controleert of de waarde van `ComboBox2` al bestaat in kolom A van "Blad1". Zo niet, dan wordt deze toegevoegd.

Dit zorgt ervoor dat de waarde van `ComboBox2` op verschillende plaatsen wordt opgeslagen, zowel in tabellen als in een specifieke kolom, afhankelijk van de voorwaarden.
 
Kunnen jullie eens uitleggen hoe je aan de juiste kleurcode komt?
Dit word allemaal geregeld door de formules op het kalenderblad in samenwerking met de tabel op gegevensblad en het databaseblad. De formule kijkt na of de datums overeenkomen, de naam overeenkomt en de omschrijving die op het databaseblad staat. Deze omschrijving wordt opgezocht in de omschrijving tabel op het gegevensblad en welk codenummer overeenstemt met die omschrijving.
Nu word via voorwaardelijke opmaak gekeken welk nummer de formule opgeleverd heeft en in overeenstemming daarmee de juist kleur weergegeven wordt.
Doe de test maar eens door een cel met formule op het kalenderblad te selecteren en dan in het lint Formule Evalueren te doorlopen.
 
Er zijn nu 2 topics met dezelfde naam.
M.a.w. @glda19 even de naam van het topic aanpassen.
@Likie74 zal niet blij met je zijn aangezien je hebt ingebroken met een vraag en opeens verder bent gegaan met deze topic onder dezelfde naam.
Mijn persoonlijke mening, niet fijn van je.:mad:
ik heb totaal geen 2 de post aan gemaakt
 
Maar je maakt ook geen enkele referentie van waar of welk bestand je deze code hebt gehaald. :(
Ook je opmerking betreffende naamgeving van objecten raakt kant noch wal. Er zijn absoluut geen algemene afspraken hierover gemaakt. Vanuit visueel oogpunt misschien interessant maar vanuit programmatisch oogpunt een ware nachtmerrie.
Probeer maar eens 20 Textboxen te vullen met data uit 1 rij. Met jouw methode heb je veel meer risico op fouten dan gewoon de nummering van de objecten te volgen. 1 foutje in een naam en je bent de klos.
Ook heb je sowieso maar enkele rijen code nodig om die textboxen te vullen.
 
wat ik niet versta waarom je nu op blad 3 de naam nog eens gaat toevoegen
Hoe hebben jullie de code laten analyseren door chatgpt
Heeft iemand al eens een test gedaan door de lijst volledig en dan krijg ik een error
 
Sorry dat ik het moet zeggen edmoor waarom die commentaar op ietw waarvan jij duidelijk niet alles weet . En onder tussen de post laten verwijderen
 
Omdat jij een halve post had geplaatst en daarna verwijderd of aangepast, heb ik mijn opmerking erover verwijderd.

Wat het onderwerp betreft, daar weet ik ruim voldoende van.
 
Op het Kalenderblad wordt de naam toegevoegd (indien nog niet bestaand) omdat er een record is toegevoegd op het Databaseblad met gebruik van die naam.
De lijst op Blad3 wordt aangevuld (indien nog niet bestaand) omdat deze als basis dient voor de NaamCombobox op het userform.
De test heb ik niet gedaan omdat ik er in de verste verte niet aan gedacht heb dat er iemand zou zijn die op het idee zou komen om met een lege lijst te beginnen. Het spijt me dat ik niet simpel genoeg gedacht heb.
 
Ik en geen enkel met namen in het vb gewerkt hebben een toegevoegd en hij zet onderaan opblad 3 van de reeds bestaande namen er extra bij is dat nodig?
 
zo zie je maar dat er zonder voorbeeldbestand niet te werken valt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan