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

Van UserForm naar Tabel

Status
Niet open voor verdere reacties.

wivoe

Gebruiker
Lid geworden
25 mrt 2008
Berichten
146
Geachte deskundigen,

Hierbij een deel van een groter bestand. De problemen doen zich
voor bij het schrijven van gegevens vanuit een Userform naar een
Tabel in een Excel bestand.

De code die zorgt voor het vinden van de eerste lege regel is m.i.:

Dim iRow As Long
iRow = Sheets("Data").Cells(Rows.Count, 2).End(xlUp).Offset(1).Row

Deze code heb ik hier op HelpMij gevonden, weet alleen niet meer in welk
bestand. Heb al verschillende mogelijkheden geprobeerd zoals hieronder
aangegeven, maar geen van alle geeft het gewenste resultaat. Dat is de
begin gegevens in rij twee zetten en zo verder.

1 Offset () wordt de eerste rij overschreven
2 Offset (0) wordt de eerste rij overschreven
3 Offset (1) wordt de eerste rij overgeslagen
4 Offset (-1) worden de headers overschreven
5 Offset (0, 1) wordt de headers overschreven
6 Offset (0, -1) wordt de eerste rij overschreven
7 Offset (1, 1) wordt de eerste rij overgeslagen
8 Offset (-1, 1) worden de headers overschreven
9 Offset (1, -1) wordt de eerste rij overgeslagen
10 Offset (-1, -1) worden de headers overschreven

De vraag is wat doe ik fout, of zijn er nog meer mogelijkheden?
Bedankt bij voorbaat voor het zoeken en geven van een oplossing.

M.vr.gr. Wim
 

Bijlagen

  • Test1.xlsm
    20,4 KB · Weergaven: 63
De gegevens gaan toch keurig naar de eerstvolgende regel? Wat is het probleem?
 
Waarschijnlijk maak je de rij onder de headers leeg en probeer je deze rij daarna weer te vullen. dan zou je het zo kunnen doen:

Code:
Private Sub CommandButton1_Click()
Dim iRow As Long
If Sheets("Data").Range("A2") = "" Then
iRow = Sheets("Data").Cells(Rows.Count, 2).End(xlUp).Offset(1).Row - 1
Else
iRow = Sheets("Data").Cells(Rows.Count, 2).End(xlUp).Offset(1).Row
End If
 
                                                               
With Sheets("Data")
  .Cells(iRow, 1).Value = Me.TextBox1.Value
  .Cells(iRow, 2).Value = Me.TextBox2.Value
  .Cells(iRow, 3).Value = Me.TextBox3.Value

With Sheets("Data")
  Me.TextBox1.Value = ""
  Me.TextBox2.Value = ""
  Me.TextBox3.Value = ""

End With
End With
End Sub
 
SjonR,

Deze code van je werkt prima, hartstikke bedankt. Je hoort het zo vaak,
je moet naar een echte specialist gaan, hier zitten ze!
Ik zal hem straks sluiten.


Wim
 
Hoi,
Ik zou het zo doen.
Als je Excel toch wil gebruiken als een "database", maak dan gebruik van een unieke waarde (ongeveer zoals een primaire sleutel in access)
 

Bijlagen

  • Test1-1.xlsb
    31,1 KB · Weergaven: 90
Hallo gast0660,

Sorry dat ik zo laat reageer. Je code is een stuk korter dan in mijn opzet.
Dat is bij grotere aantallen TextBoxen zeer handig, eveneens het zoeken op de ID.

Wat mij opviel is dat als er gegevens worden toegevoegd in jouw opzet dat telkens
het Formulier moet worden gesloten en weer moet worden geopend om een nieuw
ID nr. te krijgen. Je kunt wel gegevens intikken, maar dan krijg je geen ID nr. in
het Data blad.

Ik ga zeker kijken of ik je voorstel kan gebruiken. In mijn originele bestand komen
nog een ListBox in voor en de mogelijkheid om de gegevens via de ListBox te zien
in de resp. TextBoxen om eventuele veranderingen mogelijk te maken.

Alvast zeer bedankt voor je oplossing.

Wim
 
Hierbij een voorzetje
 

Bijlagen

  • Test1 (v2).xlsb
    35,7 KB · Weergaven: 58
Hallo gast0660,

Voordat ik terugkwam van boodschappen doen, heb jij al gedaan
waar ik weken naar had gezocht. Ongelooflijk, fantastisch, nogmaals
bedankt, wat is dit toch een pracht site!

Wim
 
Hallo gast0660 of andere deskundige,

Het heeft even geduurd, kwam iets anders tussendoor, maar heb je programma
getest en geprobeerd te begrijpen. Er zijn een paar wijzigingen die ik graag aangebracht
zou zien voor mijn bestand. Zo heb jij je programma voorzien van een ID nummer
en gaat daarop zoeken.
Voor mijn toepassing is het makkelijker om op naam te zoeken, zodat ik T_04, is je
oorspronkelijke T_05, daarop heb aangepast. In T_04 heb ik code toegepast die
filtert in eerste instantie op de eerste letter, dan op de eerste 2 letters en tenslotte
op de eerste drie letters.
Deze filtering werk prima op blad Data, maar ik wil deze ook, of alleen, zien in
T_01, T_02 en T_03 en dan eventueel de NAW kunnen aanpassen.
Tot slot, is er ook code om een gehele rij NAW te wissen en alle daaronder
gelegen rijen naar boven op te laten schuiven?

Bij voorbaat dank,

Wim
 

Bijlagen

  • DotchieJack1.xlsb
    24,6 KB · Weergaven: 38
Zoiets Wim?
 

Bijlagen

  • DotchieJack (v2).xlsb
    35,1 KB · Weergaven: 98
gast0660,

Je ziet het wel, ik schrijf je nickname met een hoofdletter!
Het is zelfs meer dat ik dacht dat kon. Je kunt nu de eerste
letter is bv t intikken plus cijfer bv 2 --> t2 dan krijg je gelijk
test 2 te zien. Ook een rij verwijderen en aansluiten, prima.
Wederom hartelijk bedankt, ik zal deze sluiten.

Groeten,

Wim
 
Wim,
Blij dat ik kon helpen:thumb:
Een klein beetje advies.
Ik gebruik altijd een ID kolom met een unieke waarde voor dergelijke zaken.
Volgens mij kan je klanten hebben met dezelfde naam.
(er zijn meer koetjes die Bella heten)
Met een ID kolom kan je ook zoeken op naam,dit is een kleine aanpassing in de code.
 
gast0660,

Uiteraard zie ik de voordelen van een uniek ID nummer wel in.
Maar als je een klantenbestand in je Database heb en er is
een relatief groot verloop van je klantenkring, dan komen er
flinke gaten in de ID nummering van de Database als je
bestand regelmatig opgeschoond wordt.
Vandaar dat ik twijfel met wat de beste aanpak is.
Als het bij wijze van spreken allemaal ergens onderdelen van
zijn is het geen probleem, die blijven lange tijd onveranderd.
Maar met mensen vind ik het toch anders.

Als ik b.v. bij de huisarts iets wil weten, dan zeg ik mijn naam
en de assistente vraag dan mijn geboortedatum voor controle.

Ik heb nu beide systemen van je gekregen dus als ik nog eens een
briljante brainwave krijg, wat op mijn leeftijd praktisch uitgesloten
is, dan kan ik daar gemakkelijk op anticiperen.
De praktijk zal m.i. uit moeten wijzen wat in dit geval de
juiste aanpak is.

Je advies en je bijdrage worden hooglijk gewaardeerd en je bijdrage
op het Helpmij forum bekijk ik een paar keer per dag met groot
genoegen.

Hartelijke groet,

Wim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan