Just nu i M3-nätverket
Jump to content

Tidsaxel


NailZ

Recommended Posts

Hej.

 

Jag har ett litet (stort) problem som jag inte riktigt vet hur jag ska lösa. Jag har en vågrätt tidsaxel i Excel och nedanför den här tidsaxeln har jag textrutor. Varje textruta motsvarar en container som är till sjöss. Det jag vill är att de här textrutorna (containrarna) ska flytta sig automatiskt längs med tidsaxeln allt eftersom tiden går. Tex en gång per dag eller ett par gånger i veckan. Jag har också ett gäng med textrutor som är utanför tidsaxeln och de ska inte flytta sig automatiskt. Är det här möjligt att lösa och i så fall hur?

 

 

Mvh NailZ

 

 

Link to comment
Share on other sites

Är det här möjligt att lösa och i så fall hur?

Allt går...

 

Detta blir nog ett fall för VBA. Men exakt hur det är jag inte helt säker på.

Ett sätt är ju att med VBA förflytta rutorna en viss sträcka. Ett annat sätt kan vara att infoga en cell eller en kolumn till vänster om textrutorna som då borde flyttas med den cell de står över.

 

Är det något annat som sker automatiskt varje dag? Något annat på bladet som ändras?

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Är det dagar på sjön du är ute efter?

Du skulle ju kunna göra en klassisk textbaserad variant på kalkylbladet med hjälp av funktionen REP() :)

Fågan är bara hur du skall kunna skriva in skalan på ett vettigt sätt.

 

Exempel (Se bifogad bild)

=REP(" ";(IDAG()-B2))&"|"&A2&"|"

 

REP() upprepar en text ett bestämt antal gånger. I det här fallet 2 tomma mellanslag gånger antal dagar sedan utresa (utresedatum i B2). Resten;

&"|"&A2&"|"

är din "Containertext" som förväntas stå i A2.

Om du använder Excel 2007 (och eventuellt 2003) så skall det gå att använda en bild som container.

Ok, kanske inte riktigt vad du tänkt dig. Moshis VBA-variant är nog bättre. Men simpla lösningar skall aldrig underskattas.

 

**ED***

Blev tungen att göra en med vågor också

=REP("~~~";(IDAG()-B3))&"[Dag:"&IDAG()-B3&","&A3&"]"

Formatera cellerna i Courier eller någon annat "skrivmaskinsfont" så borde skalan var lätt att skapa.

[inlägget ändrat 2006-11-07 20:30:19 av MH2]

Hmmmmm, varför kan jag ändra när du (monshi) har lagt en senare post? Är det bara spärrat när någon svarar direkt på inlägget?

[inlägget ändrat 2006-11-07 20:35:44 av MH2]

883218_thumb.jpg

Link to comment
Share on other sites

Textrutor är inget svårt att flytta på, gäller bara veta hur mycket. Sedan gäller det även att veta vilken textruta det är man flyttar på. Jag rekommenderar dig nästan att skapa en VBA-snutt som stegar igenom alla textrutor och ger dig möjlighet att namnge dem.

 

typ: (nej glömm denna - läs min kommentar nedan)

[color="#0000ff"]Sub[/color] renTB()
    [color="#0000ff"]Dim[/color] answ As Variant
    [color="#0000ff"]Dim[/color] myShape As Shape
    [color="#0000ff"]Dim[/color] msg As [color="#0000ff"]String[/color]
    [color="#0000ff"]For[/color] [color="#0000ff"]Each[/color] myShape [color="#0000ff"]In[/color] Me.Shapes
        msg = [GRÅ]"Vill du byta namn på objektet med namn"[/GRÅ] & vbNewLine _
        & myShape.Name & [GRÅ]"?"[/GRÅ] & vbNewLine _
        & [GRÅ]"Om inte tryck avbryt"[/GRÅ]
        answ = [color="#0000ff"]InputBox[/color](prompt:=msg, Title:=[GRÅ]"Namn"[/GRÅ])
        [color="#0000ff"]If[/color] answ <> [GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color]
            myShape.Name = answ
        [color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
    [color="#0000ff"]Next[/color] myShape
[color="#0000ff"]End[/color] [color="#0000ff"]Sub[/color]

 

Med standarnamnen på textboxarna kan man flytta dem på detta viset:

[color="#0000ff"]Sub[/color] mvTB()
    [color="#0000ff"]Dim[/color] i As Integer
    [color="#0000ff"]For[/color] i = 1 [color="#0000ff"]To[/color] 2
        [color="#0000ff"]With[/color] Me.Shapes([GRÅ]"Text Box "[/GRÅ] & i)
            .IncrementLeft 5
        [color="#0000ff"]End[/color] [color="#0000ff"]With[/color]
    [color="#0000ff"]Next[/color] i
[color="#0000ff"]End[/color] [color="#0000ff"]Sub[/color]

 

Det går även att flytta en textruta till en cells kant exempelvis:

Me.Shapes([GRÅ]"Text Box 1"[/GRÅ]).[color="#0000ff"]Left[/color] = Cells(1, 5).[color="#0000ff"]Left[/color]

 

Sedan är det bara att bestämma sig hur man ska utlösa flytten när hur de ska flyttas är klart.

 

Edit:

Bra MH2 - att se borton vad de frågade efter och ge enkla formler. Det är bra.

Kanske en vidare förklaring från NailZ vore på sin plats. Det ovan är ganska rättframt men samtidigt kan det lätt gå fel. Det är exempelvis ett visst jobb att identifiera och namnge textrutorna.

Oops - det var visst inte så svårt förresten. Det är ju bara att klicka på textrutan ifråga och skriva in namnet i namnlisten.. Mycket bättre än mitt kodförslag ovan.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

 

[inlägget ändrat 2006-11-07 20:29:08 av Monshi]

Link to comment
Share on other sites

Hej,

 

Utan att riktigt ha greppat vad du är ute efter kommer här ytterligare ett alternativ. Jag har tidigare försökt att skapa GANTT-liknande vyer i XL mha diagram (se bifogad bild). Diagrammet är ett liggande staplat stapeldiagram och det kan vara lite lurigt att utforma det så att det blir som man vill ha det, men sedan sköter uppdateringar av tex container-namnen och datum sig själva. Om källområdet till diagrammet definieras som ett dynamiskt område är det också busenkelt att lägga till och dra bort staplar i diagrammet.

 

mvh

/Johan

 

[bild bifogad 2006-11-08 09:12:51 av Pejo]

883336_thumb.jpg

Link to comment
Share on other sites

Tack ska ni ha för tipsen.

Jag har barit hunnit testa MH2s variant än. Hur får man in bilden så att den rör sig? Jag har Excel 2003.

 

Link to comment
Share on other sites

I MH2s alternativ flyttar sig texten med dagens datum, eller snarare skillnaden mellan dagens datum och det som står i cellerna i kolumn B

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Den kommer att röra sig varje gång Excel uppdateras. Dvs när du öppnar/stänger, skriver in något eller trycker på F9. Den kommer alltså inte att röra sig av sig självt.

Exempel på en sekundbåt

=REP(" ";SEKUND(NU()))&"[___/"

Tryck F9 så ser du vad som händer.

Det kräver alltså en aktiv åtgärd från din sida av något slag. Men jag antar att dokumentet kommer att öppnas/stängas med jämna mellanrum.

 

Samma sak med Johans Diagram. Måste Bygger på en formel i stil med ovanstående och kräver att bladet uppdateras på något sätt

 

Formel, Bild. Tror jag var för snabb där. Nyheten i Excel 2007 är något slags "cellbars". Vet faktiskt inte om det innebär att du kan använda valfria bilder. Någon med modernare excel får svara.

 

Vill du använda något av de VBA-makron Monshis skriver om så måste du knyta en klocka av något slag. Gå till www.XLdennis.com, sök på "levande klocka" för kodexempel. Fast du vill naturligtvis inte uppdatera en gång i sekunden, men det är bara en anpassningsfråga.

 

Hmmmm, det där var inte din fråga, eller hur? Ähh, får stå kvar. Förr eller senare kommer du att undra om det här också.

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...