31. juli 2007 - 10:53Der er
17 kommentarer og 1 løsning
Assistance i VBA søges
Hej
Jeg er meget ny i VBA, og søger derfor lidt hjælp til en efter min vurdering relativ nem problemstilling.
Jeg har et regneark der henter realtids aktiekurset ind. Jeg har de sidste mange måneder så hver dag klokken hhv 9:00 og 15:30 manuelt kopieret disse realtidskurser og tilføjet dem som værdier i to andre kollonner (hhv 9:00 og 15:30) for således at kunne følge med i dagens udvikling.
Det må kunne lade sig gøre at kode denne kopiering i VBA ikke?
Ok! Jeg har et ark med realtidskurser i e4:e39. Disse skulle gerne kopieres(kun som værdier) over i hhv kolonne G4:g39(klokken 09:30) og i kolonne f4:g37(klokken 15:30)Dette skal dog kun være hvis en dato skrevet i A1 er lig datoen idag. Dette er fordi jeg typisk for hver dag kopiere hele tabellen og sætter ind under dagens tabel og data for ældre tabeller skal ikke opdateres hver dag.
Udover ovenstående skal også værdier fra C46:c48 kopieres til d46:d48, f46:f48 kopieres til g46:g48, i46:i48 kopieres til j46:j48 og L46:L48 kopieres til M46:M48. Dette skal være klokken 08:10 hver morgen, og tilsvarende kun hvis dato i A1 er lig datoen i dag.
Sub xCopy() If [a1] = Date Then If Time > TimeSerial(9, 30) And Time < TimeSerial(15, 30) Then Range("E4:E39").Copy Range("G4") If Time > TimeSerial(15, 30) Then Range("E4:E39").Copy Range("F4") End If End Sub
Sub yCopy() If [a1] = Date And Time > TimeSerial(8, 10) Then Range("C46:C48").Copy Range("D46") Range("F46:F48").Copy Range("G46") Range("I46:I48").Copy Range("J46") Range("L46:L48").Copy Range("M46") End If End Sub
Sub xCopy() If [a1] = Date Then If Time > TimeSerial(Hour(9), Minute(30), Second(0)) And Time < TimeSerial(Hour(15), Minute(30), Second(0)) Then Range("E4:E39").Copy Range("G4") If Time > TimeSerial(Hour(15), Minute(30), Second(0)) Then Range("E4:E39").Copy Range("F4") End If End Sub
Sub yCopy() If [a1] = Date And Time > TimeSerial(Hour(8), Minute(10), Second(0)) Then Range("C46:C48").Copy Range("D46") Range("F46:F48").Copy Range("G46") Range("I46:I48").Copy Range("J46") Range("L46:L48").Copy Range("M46") End If End Sub
At dømme ud fra koden er jeg ikke sikker på at jeg har udtrykt mig klart nok. Det er KUN 2 gange i løbet af dagen at kopieringen skal foretages og ikke i intervallet medllem 9:30 og 15:30 som jeg læser ud fra koden. Skal det ikke bare være IF Tíme= timeserial(hour(9),minute(30))??
Hej, makroerne skal bare starte når regnearket åbnes om morgenen. Ideen er at jeg ikke selv behøver starte noget som helst men at alt kører automatisk. DEt må kunne lade sig gøre eller hva??
Excelent. Jeg har nu lavet en makro der virker. Jeg kan se at du andensteds har argumenteret for brugen af Application.ontime timevalue(XX:XX:XX),makro1. Dette burde vel være nok. Går udfra at den kode kører makroen præcis på de givne tidspunkter?? Jeg har bakset lidt med det men kan ikke rigtigt får det til at virke efter hensigten. Kan du supplere??
Ok. Jeg har på nuværende tidspunkt et ark der fungere. Jeg har lavet nogle makroer jeg selv starter med kommandoknapper i arket på forskellige tidspunkter. Jeg gør således at arket åbner hver morgen med windows og mangler nu bare at mine fine makros kører af sig selv på angivne tidspnkter istedet for at jeg selv manuelt skal starte dem. Er det ikke korrekt at dette kan lade sig gøre med application.ontime funktionen?
Derudover kan du måske fortælle mig hvad jeg skal skrive i vba for at clearer værdierne i en række (ikke formaterne) Jeg har Range("c5:C50").select og prøvet med selection.clear. Denne sletter desværre også formater.
Sub run() Application.OnTime TimeValue("00:00:01") + Now, "run" If Time > TimeSerial(9, 0, 0) And Time < TimeSerial(9, 0, 2) Then Call test1 If Time > TimeSerial(15, 30, 0) And Time < TimeSerial(15, 30, 2) Then Call test2 If Time > TimeSerial(8, 10, 0) And Time < TimeSerial(8, 10, 2) Then Call test3 End Sub
Hej Excelent. Mange tak for hjælpen. Du kommer altid med kvalificeret hjælp uanset hvad man har problemer med. Mit ark virker nu med application.ontime funktionen og jeg takker. Smid et svar og du får dine velfortjente point :-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.