Hejsan Ja, det är troligtvis UsedRange som spökar. Hej igen nicklas Hej Din lösning kommer väl troligtvis bli lite annorlunda, med tanke på den andra tråden, men du skulle istället kunna använda Cells(2,1). Har ändra till End(xlDown). Har troligtvis inte de kvantiteterna i filen men som du säger är det bättre att vara säker och flexibel.Problem med ActiveSheet.UsedRange
Här är en kodsnutt som skriver rader i ett excelark till en textfil. Hur får man denna kod att bara ta med de rader som innehåller tecken.
Har man skrivit in fem rader i excelarket och sedan tar bort tre av dem loopar den igenom programsnutten fem gånger ändå. Antar att det har med UsedRange att göra men får inte till det.
<Code>
With ActiveSheet.UsedRange
For nRow = 4 To .Rows.Count
sRow = ""
For nCol = 1 To .Columns.Count
If sRow <> "" Then sRow = sRow & DELIM
sRow = sRow & CStr(.Cells(nRow, nCol))
Next nCol
Print #nFile, sRow
Next nRow
End With
Close #nFile
</Code>
Någon som har några funderingar.
JesseSv: Problem med ActiveSheet.UsedRange
Sen har du en olämplig 4:a i loopen, den bör räknas fram automatiskt.
Jag skulle gjort något sånt här istället:
1. Ta fram första cellen på arket, via UsedRange.Cells(1,1)
2. Hitta sista raden genom att ta .End(xlDown) på ovanstående cell.Sv: Problem med ActiveSheet.UsedRange
Detta är mitt problem. Jag har rubriker som inte ska med. Utan den information som är intressant börjar först på rad 4. Ser ut ungefär såhär.
Nyanmälan
Avtalsnr Avd Persnr Tidpunkt Namn Årslön
35 000 5656565656302 Olle 50000
Anger man UsedRange.Cells(1,1) tar den även första raden. Alltså "Nyanmälan" Tanken är att den endast ska ta de "rader" som innehåller tecken med början från rad 4.
Är jag ute och cyklar nu eller går det att fixa.
JesseSv: Problem med ActiveSheet.UsedRange
Jag lyckades lösa detta genom att lägga till detta
<Code>
For nRow = 4 To Cells(65536, "A").End(xlUp).Row
</Code>
Så att det ser ut så här
<Code>
With ActiveSheet.UsedRange
For nRow = 4 To Cells(65536, "A").End(xlUp).Row
sRow = ""
For nCol = 1 To .Columns.Count
If sRow <> "" Then sRow = sRow & DELIM
sRow = sRow & CStr(.Cells(nRow, nCol))
Next nCol
Print #nFile, sRow
Next nRow
End With
</Code>
Vet inte om jag ska skratta eller gråta men det fungerar. Än så länge kanske man ska tillägga.
Tackar för hjälpenSv: Problem med ActiveSheet.UsedRange
Cells(65536, "A") är väl egentligen inte fel i sig, för troligtvis blir din lista aldrig så lång, men det är ändå en lite inflexibel variant. End(xlDown) är ofta mitt val.Sv: Problem med ActiveSheet.UsedRange
Tackar.