Apr 222011
 

Nokkur orð um hvernig hægt er að bæta við línu neðst í fyrirfram ákveðna stærð af innsláttartöflu með VBA.

Það getur verið hentugt að stilla upp sérstaklega ákveðinni stærð af innsláttarformi í Excel. Á netvafri rakst ég á eftirfarandi slóð sem varð kveikjan að þessum pósti. Í þessum skjölum er verið að færa inn t.d. ferðakostnað í töflu af fyrirfram ákveðinni stærð en þar fyrir neðan eru birtar samantektarupplýsingar. Verið er að keyra macro sem bætir línu fyrir ofan þann reit sem er virkur er. Þetta býður uppá vandræði ef notandinn myndi t.d. virkja reit sem væri utan innsláttarformsins.

Að sjálfsögðu er mögulegt að hafa innsláttarformið nógu stórt þannig að ekki þurfi að bæta við línu en þá er möguleiki að samantektarupplýsingar, sem eru fyrir neðan, sjáist ekki og fari fram hjá notandanum. Þá er hentugara að hafa innsláttartöfluna minni og veita notandanum möguleika á því að bæta við línu í töfluna.

Eftirfarandi vinnur út frá nefndum reit í gluggaumhverfi sem er í næsta reit vinstra megin við fyrsta reit í neðstu línu töflu. Aðgerðin fer þannig fram að fyrst er bætt við röð fyrir ofan neðstu línuna og gildin í neðstu línunni síðan afrituð í línuna sem búin var til og neðsta línan hreinsuð.

 (Það verður að vista skjalið niður á vélina ef Internet Explorer er notaður, ef skjalið er opnað beint býr excelinn til link á sjálfan sig út af macrotakkanum, virkar fínt í Firefox. Villan er eitthvað tengd langri temporary slóð í IE, er að skoða málið.)

Athuga þarf að stilla breidd töflunnar í kóðanum og sjá til þess að nafn nefnda reitsins stemmi einnig. Sjá rauðan texta hér fyrir neðan. Sjá hvert kóðinn á að fara.

Grænn texti er þegar um athugasemdir er að ræða. Þá er sett þessi skemmtilega ‘ (komma) fyrir framan textann. Athugasemdirnar mega afritast með yfir í module.

Public Sub InsertRow()

Dim rngInsert As Range                     ‘hólf fyrir reit búið til
Dim wkbBook As Workbook              ‘ hólf fyrir skjalið sem unnið er með búið til
Dim wksSheet As Worksheet              ‘hólf fyrir flipann sem unnið er með búið til

Set wkbBook = ActiveWorkbook       ‘skjalið sem opið er með sett í hólfið
Set wksSheet = ActiveSheet                  ‘flipinn sem opinn er settur í hólf
Set rngInsert = wksSheet.Range(“reitur”)       ‘nefndur reitur í gluggaumhverfi settur í hólf

rngInsert.EntireRow.Insert            ‘línu bætt við hjá nefndum reit

rngInsert.Offset(0, 1).Resize(1, 9).Copy Destination:= _
                        rngInsert.Offset(-1, 1)         ‘ neðsta línan afrituð í nýju línuna
                       
rngInsert.Offset(0, 1).Resize(1, 9).ClearContents             ‘neðsta línan hreinsuð af gildum

End Sub

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(krafist)

(krafist)

This site uses Akismet to reduce spam. Learn how your comment data is processed.