UserForm aanpassen en updaten in Sheets mbv VBA

Status
Niet open voor verdere reacties.
Prima. Zal het morgen testen en laat dit morgen weten.

Gr.

Roy
 
Prima, en heropen die andere vraag met een reactie waar je niets wijs uit wordt.
 
Oké prima. Bij de andere vraag zat juist geen Userform bij. Was een platte Excel bestand. Vraag me af of het wel zin heeft om die te heropenen? Of moet ik daar de nieuwe Excel bestand uploaden met de Userform?
 
De code is ook voor een platte Excel blad en niet voor een Userform.
Dat was daar de vraag ook niet.
Begrijp je nu waarom ik nu al niet begrijp wat je wilt?
 
Beste Harry,

De code voor TbxGO werkt nu prima. Ook bij lege TbxLengte en - breedte en gevulde TbxGO waarde gaat dit goed.
Bedankt hiervoor.

Ik heb de Userform nu geïmporteerd op kantoor in een ander Excelbestand (template) waarvan de sheets dezelfde namen hebben. Er zijn nog meerdere sheets aanwezig in dit bestand, maar die hebben voor de rest geen invloed op de Userform.

Indien ik de Userform hier toepas, krijg ik de melding : Fout 381 vba foutmelding kan eigenschap column niet verkrijgen. ongeldige index voor eigenschappenmatrix ?? Ik krijg de ruimtenummers hierdoor niet toegevoegd in Combobox1.

Code:
Private Sub ComboBox1_Change()

  With Sheets("AutoCAD Data")
    j = .Columns(1).Find(ComboBox1, , , xlWhole).Row
      TbxBouwLaag = .Cells(j, 2).Value
      TbxGO = Format(.Cells(j, 5), ".00")
      TbxHoogte = Format(.Cells(j, 6), "0.00")
      TbxLengte = Format(.Cells(j, 14), "0.00")
      TbxBreedte = Format(.Cells(j, 15), "0.00")
      CbxGebruiksfunctie = .Cells(j, 4).Value
  End With
    
bereken

  With ComboBox1
    TbxRemark = .Column(8)
    CbxGebouwdeel = .Column(10)
    CbxEnergiesector = .Column(11)
    CbxSoort1.Value = .Column(14)
    CbxType1.Value = .Column(15)
    TbxAantal1 = .Column(16)
    CbxRegeling1 = .Column(19)
    CbxDetectie1 = .Column(20)
    CbxAfgezogen1 = .Column(21)

    CbxSoort2.Value = .Column(23)
    CbxType2.Value = .Column(24)
    TbxAantal2 = .Column(25)
    CbxRegeling2 = .Column(28)
    CbxDetectie2 = .Column(29)
    CbxAfgezogen2 = .Column(30)

    CbxSoort3.Value = .Column(32)
    CbxType3.Value = .Column(33)
    TbxAantal3 = .Column(34)
    CbxRegeling3 = .Column(37)
    CbxDetectie3 = .Column(38)
    CbxAfgezogen3 = .Column(39)

    CbxVent1 = .Column(41)
    CbxVent2 = .Column(42)
  End With
  CheckRuimtenr
End Sub


Het Excel bestand heeft voor de rest dezelfde indeling in sheet Algemeen en AutoCAD data waar de gegevens opgehaald zouden moeten worden (bestand is ook opgeslagen als .xlsb).


Wat doe ik verkeerd?

Groeten,

Roy.
 
Laatst bewerkt door een moderator:
Heb je combobox1 wel gevuld met 43 kolommen?

Code:
With ComboBox1
 if .listindex > -1 then
    TbxRemark = .Column(8)
    ......
   .......
[COLOR=#0000ff] end if[/COLOR]
end with
 
In mijn Combobox1 moeten de ruimtenummers staan (die in mijn testbestand (van gisteren ) wel goed ging).

In sheet algemeen zijn inderdaad 43 kolommen.

Ik heb de code toegepast en krijg nu een aantal 0-en te zien. Als ik 1 van die nullen selecteer, krijg ik de volgende melding:

Fout 91 tijdens uitvoering: Objectvariabele of blokvariable With is niet ingesteld.

Ik dacht, indien de TestTemplate goed was, dat dit probleemloos ingezet kon worden in een ander template bestand. :confused:

Met andere woorden, de ruimtenummers worden niet overgenomen.

Groeten,
 
Laatst bewerkt:
Waar is het bestand geplaatst?
 
Op het netwerk. Mijn testtemplate heb ik steeds lokaal bewerkt.
Echter heb ik de testtemplate van gisteren op het netwerk geplaatst en die werkt gewoon.
 
Is het bestand hier al geplaatst bedoel ik.
 
Je hebt de verkeerde tabel te pakken.
Code:
ComboBox1.List = Sheets("Algemeen").listobjects([COLOR=#0000ff]"tabel2"[/COLOR]).DataBodyRange.Value
 
Pfff. Tis dus niet alleen 1 op 1 importeren, maar dus ook letten op de tabelnaam.

Is dit niet met een range op te lossen of een RowSource ipv Tabelnaam?
 
Natuurlijk, maar een tabel (listobject) is veel intelligenter.
Als jij de tabel met een rij uitbreidt, neemt de code de range automatisch mee met databodyrange.
 
Ah oké. Weer wat geleerd.

Ga dit straks uitproberen en laat het dan weten.
 
Harry,

Het is gelukt.

Heb nog een regel aangepast, omdat na het updaten, werd deze niet weggeschreven in tabel 2:

Code:
Private Sub CbtOK_Click()
Application.EnableEvents = False
  With Sheets("Algemeen").listobjects([B]"tabel2"[/B])

Alleen hoe krijg ik de lege rijen uit Combobox1? In de tabel (tabel2) heb ik namelijk lege regels (die eventueel later gevuld kunnen worden)?
Ben bezig om een standaard template te maken. Ene gebouw kan misschien 60 rijen (ruimten) bevatten een ander gebouw kan misschien 300 rijen bevatten.

Groeten,
Roy
 
Laatst bewerkt:
Verwijder die lege regels van je databodyrange tot rij 110; als je ze nodig hebt voeg je een rij in.
De formules en validaties worden automatisch aangevuld in je nieuwe rij.
 
Heb ook geprobeerd om de lege cellen te verbergen via de filters, echter krijg ik nog steeds de lege rijen te zien.

OKe op zich geen problemen mee, maar alleen indien een inspecteur op een lege cel klikt, dan krijgt hij een foutmelding en dan staan ze meteen bij mijn bureau.

Misschien moet ik een aparte code voor zien te verzinnen die de lege regels weghaalt aangezien ik alleen het template maak en de inspecteurs de getallen zelf invullen.
 
Als je ze verwijderd zijn ze er niet meer en je kan niet op een lege cel klikken.
Zo simpel kan het zijn.

Pak de laatste cel van je databodyrange in kolom AQ en zorg dat de muis een dubbele schuine pijl wordt en sleep het naar rij 110.
 
Ok duidelijk, ik zal wel een handleiding maken voor hun.

Nu mijn volgende vraag.
Hoe kan ik een extra ruimtenummer toevoegen via de UserForm?
In Combobox1 kan ik geen ruimtes toevoegen, omdat deze worden overgenomen uit Ruimtenummers van de tabel.
Moet ik hiervoor een extra Textbox voor maken? De Ruimtenummer moet onderin in Sheet AutoCAD data ingevuld worden in kolom A en vervolgens zou ik dit via Combobox1 kunnen benaderen om de rest van de gegevens te kunnen invullen.

Momenteel worden alle comboboxen, textboxen en Checkboxen gelocked, omdat men alleen op basis van een Ruimtenummer in Combobox1 de rest van de velden kan invullen. Indien men een Ruimtenummer heeft geselecteerd, dan worden de rest van de velden unlocked.

Mvg
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan