Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Eerste lege regel zoeken.  (gelezen 7521 keer)

0 leden en 1 gast bekijken dit topic.

Online popipipo

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 317
Eerste lege regel zoeken.
« Gepost op: 11 december 2007, 22:52:15 »
Sub GetOpenFileNameExample5()
      sPath = "D:\test\"
    ChDrive sPath
    ChDir sPath
 
  'sPath = "D:\test\"
  st = Application.GetOpenFilename("text files (*.txt),*.txt", , "Bestandsselectie", , True)
  If TypeName(st) = "Boolean" Then Exit Sub
 
  'voor meerdere files onderelkaar:
   With ActiveSheet.QueryTables.Add("TEXT;" & st(1), Range("A" & Rows.Count).End(xlUp).Offset(1))
   
    .Name = st(1)
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = xlMSDOS
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = True
    .TextFileTabDelimiter = True
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = False
    .TextFileSpaceDelimiter = True
    .Refresh BackgroundQuery:=False
  End With
End Sub

Bovenstaande code importeert een zelf te kiezen tekstfile uit een directory in een bestaand excel bestand.
Als ik een volgende file wil importeren plaatst hij deze in de eerste lege regel.
Hij kijkt hierbij naar de laatste gevulde cel in kolom A en plaats de volgende file in de regel daaronder.
Maar omdat er er in kolom b tm f nog wel wat staat, komt  niet alles netjes onder elkaar te staan, wat wel noodzakelijk is ivm berekeningen
Wat ik dus wil is dat hij niet alleen naar kolom A kijkt maar ook naar de overige kolommen.

With ActiveSheet.QueryTables.Add("TEXT;" & st(1), Range("A" & Rows.Count).End(xlUp).Offset(1))
Deze regel moet dus aangepast worden


With ActiveSheet.QueryTables.Add("TEXT;" & st(1), Range("A" & usedrange.rows.count+1))
Dit heb ik ook al geprobeert maar werkt ook  niet

Als bijlage de excel file en een voorbeeld van het tekst bestand.

bij voorbaat dank
Willem
Willem
Hoe meer je weet hoe meer je vergeet.
Hoe meer je vergeet hoe minder je weet.
Hoe minder je weet hoe minder je vergeet.
Hoe minder je vergeet hoe meer je weet.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Eerste lege regel zoeken.
« Reactie #1 Gepost op: 12 december 2007, 22:02:45 »
Popipipo, Het enige dat ik voor je kan bedenken is door de 6 kolommen te 'lussen' en zo de laatste regel te bepalen. Het staat nu in een subprocedure maar je zou het natuurlijk zelf in een functie kunnen zetten...
Sub VindLaatsteRegel()
Dim lZoekRegel As Long
Dim lLaatsteRegel As Long
Dim i As Integer

    For i = 1 To 6
        lZoekRegel = Cells(Rows.Count, i).End(xlUp).Row
        If lZoekRegel > lLaatsteRegel Then lLaatsteRegel = lZoekRegel
    Next i
   
    MsgBox "De 1e te gebruiken regel is: " & lLaatsteRegel + 1

End Sub
De code gaat dus kolom voor kolom bekijken wat de laatse regel is en zet dit in de variabele lZoekRegel. Vervolgens wordt die waarde vergeleken met de waarde in de variabele lLaatsteRegel. Als die waarde lager is gebeurt er niets. Als de waarde hoger is, zal lLaatsteRegel deze waarde overnemen.
Om de regel te bepalen waar je vervolgens met importeren mag starten zal je nog lLaatsteRegel + 1 moeten doen.

Groet, Leo
______________________________

Groet, Leo

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Eerste lege regel zoeken.
« Reactie #2 Gepost op: 12 december 2007, 22:58:42 »
...en na nog wat doorpuzzelen lukte het me om het nog korter te maken met een 'Array-variabele' en de worksheetfunctie 'Max'...Sub VindLaatsteRegel2()
Dim vZoekRegel(6) As Variant
Dim i As Integer

    For i = 1 To 6
        vZoekRegel(i) = Cells(Rows.Count, i).End(xlUp).Row
    Next i
   
    MsgBox "De 1e te gebruiken regel is: " & Application.WorksheetFunction.Max(vZoekRegel) + 1

End Sub

Groet, Leo
______________________________

Groet, Leo

Offline Erik Van Geit

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 306
  • Geslacht: Man
Re: Eerste lege regel zoeken.
« Reactie #3 Gepost op: 13 december 2007, 01:05:17 »
Hallo,

Zonder loop kan het ook.
Eerste lege rij in kolommen A tot F in sheet "data"
Sub test()
Dim LR As Long


    With Sheets("data").Range("A1:F" & Rows.Count)
    LR = .Find("*", .Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False, False).Row
    End With

MsgBox LR + 1
End Sub

beste groeten,
Erik

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Eerste lege regel zoeken.
« Reactie #4 Gepost op: 13 december 2007, 22:01:33 »
Erik, ...dat is óók een 'leukertje'. Ik heb 'm direct toegevoegd aan m'n sheet met al dit soort codeblokjes.

Kan je ook uitleggen wat het 'Find' nou moet vinden? Je laat 'm zoeken naar '*' (= dus alles!) in de range A1:F65536. Hoe kan LR dan terugkomen met de laatst ingevulde regel???

Groet, Leo
______________________________

Groet, Leo

Offline Erik Van Geit

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 306
  • Geslacht: Man
Re: Eerste lege regel zoeken.
« Reactie #5 Gepost op: 13 december 2007, 22:53:59 »
xlFormulas of xlValues maakte in dit geval niet zoveel uit

wat wel belangrijk is:
vanuit de eerste cell van het bereik vertrekkend
.Cells(1, 1)zoeken naar "vorige",
xlPreviousdus vertrekkend in de laatste cel van het bereik
uiteraard zoekend per rij
xlByRows
lijkt nu wellicht simpel

slaap zacht,
Erik

Online popipipo

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 317
Re: Eerste lege regel zoeken.
« Reactie #6 Gepost op: 14 december 2007, 18:49:42 »
Bedankt  voor jullie oplossingen
Ik begrijp zo ongeveer wat jullie formules doen.
Maar om het zelf te schrijven is een tweede.

Willem
Willem
Hoe meer je weet hoe meer je vergeet.
Hoe meer je vergeet hoe minder je weet.
Hoe minder je weet hoe minder je vergeet.
Hoe minder je vergeet hoe meer je weet.

 


www.combell.com