zoeken

Status
Niet open voor verdere reacties.

Benny10

Gebruiker
Lid geworden
1 apr 2013
Berichten
24
hallo, ik gebruik de volgende formule voor het opzoeken van klanten,heb ik van dit forum

Code:
Public Const KlantenGegevensBladnaam As String = "blad3"
Public Const KlantnrKolom As String = "A"
Public Const NaamKolom As String = "B"
Public Const AdresKolom As String = "C"
    
Private Sub ZoekKlantButton_Click()
  Dim KlantnRij As Long
  On Error Resume Next                                                                                                           DIT is een stuk uit de formule

  If IsNumeric(KlantnrTxt.Text) Then  
    With ThisWorkbook.Sheets(  KlantenGegevensBladnaam)  
      KlantRij = .Columns(KlantnrKolom).Find( _

ik zoek een formule zodat ik in plaats van "blad3" in meerdere bladen kan zoeken
 
Laatst bewerkt door een moderator:
Zo zoek je in alle bladen van je werkboek.

Code:
dim ws as worksheet
 for each ws in sheets
on error resume next
  KlantRij = ws.Columns(KlantnrKolom).Find( _    
next ws
 
Toch maar eens een gok wagen op een toch wel onduidelijke vraag :(
Met onderstaande code scroll je door alle bladen van een workbook.

Code:
        For Each objMySheet In objWorkbook.Worksheets
        
            Select Case UCase(objMySheet.Name)
                Case UCase("blad 3")
                    'Code voor blad "Blad 3" komt hier
                    
                    
                Case UCase("huppeldepup"")
                    'Code voor blad "huppeldepup" komt hier                    
                    

                Case Else
                    'Niets doen voor dit blad
                    
            End Select
        Next

Heb je hier iets aan of niet?
 
alvast bedankt maar heb nog een vraag
Deze formule(maar dan met meer regels gebruik ik voor invoegen van klanten)werkt perfect
nu wil ik deze ook gaan gebruiken om andere gegevens in een factuur te zetten
maar deze zou moeten begingen vanaf blad11-D13

Private Sub Invoeren_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Blad11")

'plaats gegevens in factuur
'vindt laatst gebruikte cel' ga naar de volgende rij
iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'plaats de gegevens in de database
ws.Cells(iRow, 1).Value = Me.BestelnrTxt.Value
 
Het is wel allemaal vaag, maar ik doe maar een gooi.
Vanaf blad13 t/m laatste blad.

Graag de groene text weglaten, ik word er scheel van. :(

Code:
dim i as long
for i = 13 to sheets.count
sheets(i).cells(irow,1) = ....
next i
 
wat ik bedoel is dat ik op blad11 vanaf kolom D rij13 wil beginnen met invullen
 
Graag de groene text weglaten, ik word er scheel van. :(
Ik ook :p

@Benny10
1) Je spreekt over een formule, welke formule?!? Ik zie hier enkel CODE!
2) Gelieve dan ook code tussen CODE tags te zetten, gebruik desnoods het icoontje met "#"
3) Hoe moeten wij in Godsnaam iets voorstellen wanneer wij niets weten :)
Hoe noemen je bladen?
Is het allemaal 'Bladxx' ?
Met of zonder spatie?
4) Wat komt dat scheel groen D13 daar te doen?

Begrijp ik het goed dat je code
Code:
'vindt laatst gebruikte cel' ga naar de volgende rij
iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'plaats de gegevens in de database
ws.Cells(iRow, 1).Value = Me.BestelnrTxt.Value .

moet uitvoeren op alle worksheets genaamd "Blad11" tot ?????????

Wel:
a) maak een kleine sub met die code
b) gebruik de "For each" loop die ik eerst postte
c) voeg een rij toe voor elke sheet die je wil bewerken en roep je kleine sub aan met de huidige sheet als input

Dus iets in het genre
Code:
Private sub MySmallSub (MyWS as Worksheet, MyBestelNr as String)
With MyWS
     'vindt laatst gebruikte cel' ga naar de volgende rij
     iRow = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

     'plaats de gegevens in de database
     .Cells(iRow, 1).Value = MyBestelNr
End With

In je hoofdcode komt dan iets in het genre
Code:
       For Each objMySheet In objWorkbook.Worksheets
        
            Select Case UCase(objMySheet.Name)
                Case UCase("blad 3") : Call MySmallSub (objMySheet, Me.BestelnrTxt.Value)
                Case UCase("blad 4") : Call MySmallSub (objMySheet, Me.BestelnrTxt.Value)
                Case UCase("blad 5") : Call MySmallSub (objMySheet, Me.BestelnrTxt.Value)


                Case Else
                    'Niets doen voor dit blad, daar het geen "Blad xx" sheet is
                    
            End Select
        Next
 
ik wilde mijn project erbij voegen maar het luk niet

het project is 110 kB
 
Bekijk bijlage Facturen_Maken_3.xls

Hierbij mijn project

als je de taakbalk aanklikt dan zul je zien dat er een knop is materiaal
daar kun je dan vb nr 1 invullen(deze gegevens komen uit blad 5) maar wil gegevens uit meerder tabbladen halen van materialen
als je bij deze dan op invoegen drukt dan worden de gegevens helemaal onder aan factuur gezet en wil deze in factuur
heb dit in de factuur met een rood vlak aan geduid waar ik wil beginnen met invullen van materialen
ik hoop dat dit wat duidelijk is
 
Hallo Benny, Mooi projectje heb je daar :D
Echter heb ik probleem met een aantal zaken die, volgens mij, vroeg of laat roet in het eten zal strooien :confused:
Bijvoorbeeld:
Waarom "Blad5" tem "Blad7" ? Als ik het goed voor heb zijn dat allemaal materiaal werkbladen, right?
Waarom niet alles op één blad en vééél meer onderverdelen vb van kolommen Merk, Product, Ampérage, ... ... ...
Dan zou je doelgerichter kunnen zoeken via je forms.
Nu moet je een nummer invoeren om een "schneider Diff 4p 63A 30mA" te vinden.
Volgens mij moet je "Merk" en "Product" ingeven en je krijgt een lijst van alle mogelijke diff schakelaars en dan kies je één uit die naar de factuur/offerte gekopiëerd wordt.

Hoe kom je aan die waslijst van modules? Dat kan allemaal in één module hoor!
Trouwens al die code staat al in "frmTaakbalk" dus waarom nog die modules?
Dat maakt het allemaal onoverzichtelijk en binnen de kortste keren vind een hond zijn jongen hier niet in terug.

In Blad5 cel F4 staat te lezen "=SUM(D4*E4)" die "SUM" hoeft daar niet! "D4*E4" werkt even goed.

In routine "Private Sub invoerenButton_Click()" staan veel directe referenties naar cellen
Code:
Range("G4") = NaamTxt.Value
Range("G5") = AdresTxt.Value
Range("G6") = PostcodeTxt + ("   ") + WoonplaatsTxt.Value
Range("G8") = BTWnrTxt.Value
Range("B34") = ComboBox1
Range("D34") = DatumTxt
... ... ...
Probeer dit te vermijden door cellen een naam te geven. In je code kan je diezelfde naam dan ook gebruiken.
Wanneer je later dan een rij of kolom toevoegt of verwijdert, dan zal je code blijven werken.
Dat is trouwens al het geval met de datum in je Factuur blad. Hierboven staat te lezen "D34" maar op Blad1 is dat wel cel "D36" !!!
Cel "D36" moet bijvoorbeeld de naam krijgen "rngFacDate".
Je code wordt dan:
Code:
... ... ...
Range("rngFacDate")= DatumTxt
... ... ...

Zo zou ik dus de rode cel "B14" op "Blad1" een naam geven "rngFacFirstRow" en die naam dan gebruiken in de code wanneer materiaal moet toegevoegd worden.
Ofwel gebruik je "Offset" en een teller om de volgende rij bij te houden
Ofwel gebruik je End(xlDown) om de laatste rij te vinden.
Maar persoonlijk zou ik A13 gebruiken als referentie en niet B14.

Op dezelfde wijze kan je dan cel "B14" op "Blad2" een naam geven "rngOffFirstRow" en die naam dan gebruiken in de code wanneer materiaal moet toegevoegd worden.
 
Alvast bedankt voor de informatie
Ik had er al aan gedacht om alle materialen op 1 blad te maken
ik weet dat het project een puinhoop is wil dit nog aanpassen
maar het is de eerste keer dat ik hier iets mee maak,had 2 weken geleden nog niets van VBA gezien
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan