Du kan lave en anden kolonne, som tæller op hvis der er noget i kolonne A, Fx i celle b7; hvis(a7<>"";b6+1;"";)Det kopieres til hele B-kolonnen. Så skal man bare sige maks(b1:b2000) - så har man den sidste række med mening i kolonne A
-> bak det er kun rene data i kolonne A Benytter Selection.ClearContents før nye data blir kopiert inn. Men det noen formeler i andre kolonner som har kolonne A som referanse. Kan det være årsaken? -> klid ditt svar kan være en løsning, men problemet er at det kan være tomme celler i kolonne A før jeg kommer til siste rad. :-)
Det virker som det er Selection.ClearContents som ikke tømmer cellene helt. Selv om de ser ut til å være tomme, finner xlUp noe. Når jeg manuelt merker kollonne A og trykker del, finner xlUp riktig rad. Kan jeg benytte en annen funsjon enn ClearContents til å tømme cellene? Jeg ønsker å beholde formatene. ( datoformatet i kolonne A)
Det her forstår jeg ikke... Jeg tror du bliver nødt til at vise noget mere af kode, for den linie kan ikke være den der giver dig fejl. Clearcontents skal være nok jeg tester sådan her, og og uanset hvad jeg gør rammer den rigtigt.
Sub test4() MsgBox ActiveSheet.Range("A64000").End(xlUp).Row End Sub
Der er i linje 3 (L3) programmet stopper. (dblVerdi = 0 ) I L1: er (intFraRadNr = 1000), men det er ikke data i A1000 Formlene i kolonnene som refererer til A legger ned til rad 1000
-> jkrons, jeg har ikke prøvd Selection.Clear da det fjerner formatet. Men jeg har testet Selection.ClearContents i liten målestokk. Da fungerte det. Så det må være feil i min kode. :-)
Måske er det mig, der har misforstået dine procedurer, men i den første procedure aktiverer du arket DecayRaadata og renser området CleanDeacay for indhold. I den anden Sub vælger du arket DriftRaadata og finder den sidst benyttede celle i a-kolonnen. det ser altså ud som om de to subs arbejder med to forskellige ark.
Problemet er, at det er lidt svært at gennemskue, hvad det er, du forventer der skal ske. Og det er svært selv at afprøve koden, når der mangler noget.
Som jeg opfatter funktionaliteten aflæser den, den sidste "brugte" celle i kolonnen og skriver denne værdi + 1 i en anden celle, men det kan være helt forkert opfattet.
Jeg bruger i et lignende tilfælde Activesheet.UsedRange, kan det ikke bruges her?
dim isect as range dim lastcell as range Set isect = Application.Intersect(Activesheet.UsedRange , Range("A1:65000")) If isect Is Nothing Then MsgBox "Error" Else lastcell = isect.End(xlUp) End If Ved ikke om det giver samme problem som det nævnte (er lidt svært at gennemskue)
Hvad er ntKolonneNr? - hvis den er 1 (svarende til "A") er det måske her fejlen ligger - mener du ikke L2: ActiveSheet.Cells(intTilRadNr, intKolonneNr + 1) = intFraRadNr ??
Beklager at jeg ikke har kunnet svare på noen dager. Benyttet selection.clearcontens på "områdeA" Så ble KUN VERDIENE fra "områdeB" kopiert og limt inn i "områdeA" Cellene i "områdeB" hadde formelen: Hvis(Alternativ1= sann , X ; " "), Det var disse " " verdiene ...End(xlUp) registrerte. Forstår dere min "klumsete" forklaring :-?
-> jkrons og det hadde jeg desverre glemt å fortelle dere My Mistake. Så områdeB hadde formler, jeg limte dem inn i områdeA som verdier. Det må være " " verdiene i områdeB som skapte problemene for meg
Dere får noen point's alle 4,skal øke pointene litt. bak, jkrons og klid får "sminde noen svar" (min dansk er ikke god) :-) PS! når man har definert et objA As Range. har objektet kun en områdeverdi, eller ligger også alle cellens verdier lagret i objektet. ( må lese mere om dette med objekter )
->bak Hvilke verdier kan en rangeobjekt som omfatter mange celler ha Hvis et rangeobj. representerer celle A1 og B1. Kan objektet innehodlde tallverdiene til begge disse cellene? Det er mulig jeg spør helt feil fordi jeg ikke forstår objekter :-)
Ja, det kan sagtens indeholde begge værdier, men betragt rangeobj som en reference til et område i stedet, for hvis en værdi ændres i området indeholder det gamle rangeobj ikke de gamle værdier, men de nye. Hvis du har et rangeobj = A1:C20 kan du referere til de enkelte celler således test = rangeobj(19,3) hvilket er lig med c19
Sub teste() Dim rangeobj As Range Dim test As Long Set rangeobj = Range("A1:C20") test = rangeobj(19, 3) MsgBox test End Sub
Håber at det besvarer dit spørgsmål ellers må du prøve igen :-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.