Gå til innhold

[Løst] Autogenerert liste


RuneTh666

Anbefalte innlegg

Jeg har en Excel-mal som i utgangspunktet har disse fanene:

Forside

Oppsummering avtrekk

Avtrekk

Oppsummering tilluft

Tilluft

Stopp

 

Det kan være alt fra ett til mange ark som heter noe med avtrekk og / eller tilluft. I B11:B35 på avtrekk og tilluft er det mulig å skrive opp romnr eller betegnelse.

 

Hvis jeg lager ett ark som f.eks heter Romliste og legger det inn mellom Forside og Oppsummering avtrekk er det da mulig at etterhvert som jeg skriver inn ett romnr eller betegnelse i ett av arkene med avtrekk eller tilluft så vil Romliste oppdateres sånn at romnr står der og hvilket ark det aktuelle rommet står oppført på?

F.eks 304; Avtrekk 3etg (3); Tilluft 3etg (9)

Semikolon brukte jeg bare for å illustrere forskjellige kolonner. I eksempelet mitt finnes da altså rom 304 på ark som heter Avtrekk 3etg (3) og Tilluft 3etg (9).

Hvis jeg enda ikke har klart å evt sette fast excel så det det også vært veldig praktisk at romnr bare kom en gang i Romlisten selv det på tilluft og avtrekksarkene kom flere ganger

 

Lenke til kommentar
Videoannonse
Annonse

Hei

 

Dette går greitt med en makro.

Men vær forsiktig med å eksemplifisere. Her tar jeg for gitt at arkene heter helt nøyaktig det du skriver, ellers må du inn og rette.

Jeg har også forutsatt at du skriver romnummer inn i kolonne B (Target(1).Column = 2), og bare der, i alle ark, og at vi skriver dem inn i kolonne B i Romliste (Trg.Cells(RW, 2) ). Dette er viktig, du må gjøre likt i alle ark og du kan ikke sette inn ny kolonne til venstre i noen av arkene.

 

What to do: Åpne VB-editoren (Alt F11 eller liknende).

I vinduet oppe venstre, dobbelklikk  "ThisWorkbook".

I den hvite modulen som åpner seg, lim inn følgende:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Trg As Worksheet
Dim RW As Long, CW As Long
On Error Resume Next
Set Trg = ThisWorkbook.Sheets("Romliste")
If Trg Is Nothing Then Exit Sub
If Sh.Name = Trg.Name Then Exit Sub
If Sh.Name = "Forside" Then Exit Sub
If Sh.Name = "Oppsummering avtrekk" Then Exit Sub
If Target(1).Column = 2 Then ' = B-kolonnen er endret!
    RW = Trg.Columns(2).Find(What:=Target(1).Value).Row
    If RW = 0 Then
        RW = Trg.Cells(Trg.Rows.Count, 2).End(xlUp).Row + 1
        Trg.Cells(RW, 2).Value = Target(1).Value
    End If
    CW = Trg.Cells(RW, Trg.Columns.Count).End(xlToLeft).Column + 1
    Trg.Cells(RW, CW).Value = Sh.Name
End If
End Sub

Så kan du returnere til Excel og så skal det virke. Hvis ikke må du kanskje aktivere makroer hvis Excel sier de er deaktivert, eller du må endre kolonnenummer i koden hvis arket ditt ser annerledes ut.

 

HTH. Beste hilsen Harald

Endret av Harald Staff
  • Liker 1
Lenke til kommentar

Takker så mye.

Var to ting jeg oppdaget som jeg kunne tenkt meg å få fikset. Når jeg testet med å legge inn romnr så kom romnr i kolonne B i romliste og henvisning til ark i C. Er nok en veldig enkel sak men hva må jeg endre for å få romnr i A og arkhenvisning i B?

 

Ser at hvis jeg endrer ett romnr (f.eks fra 102 til 102A) så blir 102 liggende igjen også blir 102A lagt til som nytt romnr.

 

Ellers så fungerte det akkurat sånn som jeg hadde tenkt meg så takk for hjelpen igjen :-)

Lenke til kommentar

Hei

 

Skrive i A gjør du ved å endre alle 2-tallene ETTER setningen "B-kolonnen er endret!" til tallet 1.

 

Endring er verre. 102 til 102A skulle jeg kanskje klare. Men 102A til 102 eller 102B eller 103 er nesten umulig, medmindre du har en logikk med at det alltid er helt unike rom som starter med tre sifre. Altså at 102 og 102A er samme rom og at 102A og 102B aldri er to forskjellige rom og at 1024A aldri forekommer i den sammenhengen. Eller, alt går, men det krever en streng og konsistent logikk og mye programmering.

 

Beste hilsen Harald

  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...