PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBAMakro som skall radera eller inte göra beräkningar på tomma raderMakro som skall radera eller inte göra beräkningar på tomma rader
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2009-03-30 13:45
 

Denna fråga finns även med under excel-delen i detta forum men tänkte att detta kanske mer är vba än egentligen excel även om makrot körs och skapas via excel så är ju problemet ett vba-makro så jag gjorde samma inlägg här också.

Jag har skapat ett makro i excel 2003 som multiplicerar värdet i kolumn B med ett fast värde ex-vis 10 och returnerar värdet till kolumn C och lägger dit en enhet på värdet.

Problemet är bara att det gör det ända ner till max antal rader..... 65000 rader någonting sedan får jag scrolla ner och städa rader/celler som jag vill ska vara tomma (makrot används inte till samma antal rader vid varje körning utan antal rader kan variera kraftigt).

Jag har kommit fram till två möjliga lösningar men jag behöver hjälp med dessa båda förslag...

Lösningsförslag 1: skapa ett makro som kollar vilken cell som först är tom i kolumn A och raderar alla rader nedanför... och hur gör jag i så fall en "blank/empty" kontroll och raderar allt hela vägen ner till 65000+ något?

Lösningsförslag 2: =Det jag helst vill, nämligen att summeringen kollar ned till vilken rad det finns data att summera och inte skriver ut summan med enhet nedanför den raden och hur gör jag då?
Alla rader med data som skall summeras har text i kolumn A ned till en viss rad.. det vore bra att utgå från kolumn A för att kolla hur långt ned i listan summeringen med data från kolumn B till kolumn C skall göras

Någon vänlig som har förslag?

Nytt inlägg
 2009-03-30 14:17
 

Ja, det finns en hel del varianter för detta. Om det kan finnas "hål" i första kolumnen så gäller vissa lösningar.

Det enklaste, om det inte finns "hål" i första kolumnen, tycker jag är något i stil med:

Dim MaxRow As Integer
MaxRow = ws.Range("B1").End(XLDown).Row

For i = 1 To MaxRow
  'Gör något
Next i

Detta kräver också att det är minst två celler i kolumn B.

 

Sen kan man ju också fundera på om det inte hade varit smidigare med en formel i det här fallet; =(B1*10) & " kr".

Nytt inlägg
 2009-03-31 00:14
 

Tack för ditt svar men jag tror inte ditt förslag kan lösa mitt problem....

Jag har självklart en formel i cellen men problemet är att denna formel kopieras till en himla massa celler  under varandra av makrot  (hela kolumn C).

Vid körning av makrot som gör en himla massa annat också får jag med en massa rader med 0 "kr" t.ex. när formeln kopierades in i hela kolumnen .Alltså makrot räknar (formeln kopieras) även in i tomma celler eftersom kontrollen av vilka celler/rader som inte innehåller data att räkna med  i nuläget saknas . Därav är jag ute efter att ta reda på=automatiskt få reda på vilken som är sista raden i kolumn A som inte innehåller data. för att kunna ta med den kontrollen innan beräkning=inklistring av formeln görs så inklistring bara sker ner till sista rad med data i kolumnen och inte hela vägen ned till max-rader i dokumentet

I kolumn A förekommer inga luckor utan data finns med från A1 ned till vid start av makrot okänt antal rader allt från ca tio till flera hundra rader

(makrot skapar i slutänden en komplett tabell med html taggar och rubbet med uträknade förutbestämda data celler med i tabellen som sedan presenteras på en web-sida). 

Tyvärr om jag inte missförstått det hela är din dim maxrow lösning inget jag kan använda eftersom den inte kollar vilken rad som är den första tomma i kolumn A utan jag anger vilken som är den sista och sedan loopas det till maxrow sätter stopp för loopen eller har jag missförstått?

Nytt inlägg
 2009-03-31 11:59
 

För det första missuppfattade jag nog dina kolumner, där det står "B" i min kod är det nog "A" det ska vara. Utifrån din beskrivning tycker jag nog att min kod gör det den ska.

Låt säga att du har data i A1-A5

ws.Range("B1").End(XLDown)kommer då ge cellen A5 som svar, och vidare ger då

ws.Range("B1").End(XLDown).Row5 som svar.

Sen loopar du från 1 till MaxRow = 5. Det betyder att den sista ifyllda cellen är den sista som makrot använder. Var det inte så du ville göra?

Nytt inlägg
 2009-04-07 18:52
 

Tack för svaren!

Gjorde dock lösningen jag fick på samma fråga under excel-delen i forumet.... men problemet är löst

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBAMakro som skall radera eller inte göra beräkningar på tomma raderMakro som skall radera eller inte göra beräkningar på tomma rader

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter