Just nu i M3-nätverket
Gå till innehåll

Nedräknare i arbetsbladen.


MaxRoyale

Rekommendera Poster

Tror jag får backa ett steg.

Tror nog koden måste reagera på någon annan ändring, göra annan koll på bladet. Denna kontroll fungerar uppenbarligen inte.

 

Men när jag tänker efter kanske det går att lösa på enkelt vis.

Är det som så att betangel skriver om hela bladet på en gång, alla celler ändras?

 

Då kan nog denna lilla ändring hjälpa dig:

Private Sub Worksheet_Change(ByVal Target As Range)
   
    If Not Application.Intersect(Me.Range("H1"), Target) Is Nothing Then
	    If Me.Range("H1").Value = "" Then
		    Modul1.StartClock Me.Range("d1"), Me.Range("h1")
	    End If
    End If
End Sub
Ser du ändringarna? vad har jag gjort?

Nu ska vi se. Om inte målet (Target) är inget då inget, om H1 är tom då starta klockan. Förstår jag det rätt?

Länk till kommentar
Dela på andra webbplatser

  • Svars 71
  • Skapad
  • Senaste svar

Nja, inte riktigt.

1. Tog bort kollen om det var bara EN cell som ändrades. Förut stannade koden där, avslutade rutinen om mer än en cell ändrats.

2: Application.Intersect(Me.Range("H1"), Target)

tar fram skärningen mellan Range("H1") och Target, alla celler som är gemensamma för denna skärning. I detta fallet cell H1 eller inget. Vilken kontrolleras.

3: Nästa steg, eftersom Target kan vara en array av celler använder vi H1 som referens för vidare anrop.

Länk till kommentar
Dela på andra webbplatser

Då fungerar inga klockor alls när jag provar efter ändringen. Har inte länkat den mot betangel men klockorna borde funger inna jag gör det eller.

Länk till kommentar
Dela på andra webbplatser

Fungerar inte alls?

 

Koden ser inte lika illa ut för dig som för mig antar jag, firefox käkar upp en del tecken så postar en bild för säkerhetsskull

post-8996-0-43721000-1435852792.png

Länk till kommentar
Dela på andra webbplatser

Nu har jag länkat ihop med betangel, då hoppar klockorna igång med engång. Nu låsersig det inte men msg boxen kommer upp helatiden .

Det ser ut som om att så fort betangel uppdaterar arbetsboken så kör den igång klockorna igen.

 

Jag kan ställa in hur ofta den ska uppdatera sig , ställde in på 200 millisekunder och då ser man att klockorna kör igång oftare.

Jag vill att den ska uppdatera sig ofta så att man ska få det bästa priset.

Går detta att lösa tror du?

Nu ser man allafall att klockorna körs så det närmar sig.

Länk till kommentar
Dela på andra webbplatser

Då behövs något annat villkor helt enkelt.

kanske även skriva till en cell på bladet att klockan rullar redan, att det inte startas en ny klocka för detta blad, denna cell igen? En självklar koll egentligen.

Kanske ska börja med det?

Länk till kommentar
Dela på andra webbplatser

mmm den ska ju starta när cellen blir tom. 

Kan man inte använda "suspended" på något sätt. När suspended försviner från cellen då starta klockan.

Länk till kommentar
Dela på andra webbplatser

Dvs spara föregående värde och se när det blir en förändring. Fullt möjligt.

 

 

Dim lastValue As String

Private Sub Worksheet_Change(ByVal Target As Range)

    

 

If Not Application.Intersect(Range("H1"), Target) Is Nothing Then

        If Me.Range("h1").Value <> lastValue And Me.Range("h1") = "" Then

            Modul1.StartClock Me.Range("d1"), Me.Range("h1")

        End If

        lastValue = Me.Range("h1")

    End If

End Sub

Länk till kommentar
Dela på andra webbplatser

Kan det vara så att alla klockor startar nu när en förändring sker.

För vad jag kan se så är det ett blad som förändringen sker och msg boxen ploppar upp att alla klockor upptagna.

Jag har flera blad som är tomma men ser ingen nedräkning på dom heller.

Länk till kommentar
Dela på andra webbplatser

Eller räknar den "running" som en förändring. Den växslar från klar till running till msg box och när jag klickar bort den så börjar den om.

Länk till kommentar
Dela på andra webbplatser

Nej och åter nej.

Klockan starta enbart OM villkoren uppfylls.

 

Worksheet_change fyras enbart av vid ändring på bladet. Vilken cell som helst.

När ändring sker kollas om det är viss cell som ändrats och, med senaste ändringen, om cellens värde verkligen ändrats.

Endast då och då menar jag endast då startas klockan.

 

men men lägg in följande rad i proceduren StartClock i modul 1

 

Debug.Print "Klocka för blad " & rnTarget.Parent.Name & " startad " & Now
 

då får du koll på vilken klocka, vilket blad som startat.

 

Och jag tror vi ska lägga in en koll till som gör så att en klocka inte kan startas igen på samma blad så länge en klocka rullar.

Dvs flytta målcellen från cellen som aktiverar den.

del av Worksheet_change:

 If Me.Range("h1").Value <> lastValue And Me.Range("h1") = "" And Me.Range("i1") <> "running" Then
            Modul1.StartClock Me.Range("d1"), Me.Range("i1")
Länk till kommentar
Dela på andra webbplatser

Oki men där är felet antar jag för på bladen ändras marknaden helatiden.

Länk till kommentar
Dela på andra webbplatser

Debug.print, bara den ligger i StartClock-proceduren. jag lade den tre rader från slutet i den funktionen.

Allt ska stå på en rad, Eforum kan ha infogat radbrytning.

Länk till kommentar
Dela på andra webbplatser

Nu så, första nedräkning fungerade helt korrekt och inga msg box. Synd att matcherna tar slut för i dag. Fortsätter testa imorgon men nu ser det ut att fungera som jag vill.

Länk till kommentar
Dela på andra webbplatser

En fråga . Gör den flera nedräknngar på samma blad om ändring sker i H1 eller bara 1 gång.

Länk till kommentar
Dela på andra webbplatser

Testa och se!

 

men gången blir ju

Cell H1 har ett värde

Cell h1 ändras till blank

Cell I1 får ett värde (running)

Klockan startar.

Om h1 ändrar värde nu startas inte klockan pga av värdet i I1

klockan klar, skriver till I1 Klar

nu är klockan ledig/nu kan samma blad starta en klocka igen.

Länk till kommentar
Dela på andra webbplatser

Fick precis se att det funkar fint!!!

 

Kanon Stort tack!!

 

Nu blir det att försöka sig på fler projekt!! Det här verkar roligt och intresant!

Men har hör att om man spelar in makron och studerar koden så kan man lära sig mer om VBA, stämmer det? Finns det sidor som man kan gå och kolla vad all kod betyder.

Länk till kommentar
Dela på andra webbplatser

Ja du kan spela in vad du gör, främst formatering, kopiering, flyt av celler och liknande. Då får du en lite stökig kod men du kan se vad/hur du kan göra en del saker (på ganska "pratigt" vis).

 

Du kan ta en titt i denna tråd

//eforum.idg.se/topic/349171-kopiera-celler-fr%C3%A5n-en-flik-till-en-annan/

där jag igår städade en inspelad kod, tog bort alla Select-satser och även kortade ned koden en del.

 

Den hjälp som finns i Excel/VBA är duglig. Annars bara söka på google.

VBA funktionsnamn

duger bra som sökord normalt sett.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...