|
| Excel - Tællefunktion Fra : CLAN | Vist : 1751 gange 360 point Dato : 23-10-06 21:31 |
|
Hejsa
Er der nogen, som kan oplyse mig om, hvordan man får Excel til at tælle op med 1 i en given celle ved opstart?
Eksempel:
I celle G1 står tallet 2600. Ved næste åbning/opstart af filen, tælles op til 2601.
Dette skal gentage sig, ved hver åbning af filen... altså skal der ved næste åbning stå 2602, ved næste igen 2603 osv.
Håber nogen kan hjælpe
Søren
| |
| Kommentar Fra : sion |
Dato : 23-10-06 21:50 |
|
Det kan gøres ved at lægge følgende kode i VBA:
Kode Private Sub Workbook_Open()
Range("A1") = Range("A1") + 1
End Sub |
Herved lægges 1 til tallet i A1 hver gang regnearket åbnes. Husk at gemme hver gang ved afslutning.
Simon
| |
| Kommentar Fra : sion |
Dato : 23-10-06 22:08 |
|
Du kan åbne Visual Basic editor (for Applications) (VBA) i menuen Funktioner -> Makro.
Her skulle der gerne være et "træ" til venstre ligesom i stifinder. Her er der under VBAProject -> Microsof Excel Objects et objekt, der hedder ThisWorkbook. Åbn denne.
Her indsætter du den kode, jeg skrev tidligere. Du kan også selv en kode - vælg da først "Workbook" i den første DropDownBox (hvor der står (General)) - herefter er der en masse muligheder i den anden DropDownBox.
Når al kode er indtastet, lukkes VBA. Koderne gemmes, når du gemmer regnearket.
Hvis det ikke er nok forklaring, kan jeg lægge et regneark ud på nettet.
Simon
| |
| Kommentar Fra : zakia1964 |
Dato : 24-10-06 08:21 |
|
Husk at gemme dit regneark når koden er lavet. I koden du fik af Sion skal du istedet for A1 skrive G1 som jo er den celle hvor du har tallet der skal tælle op.
Når regnearket er gemt skal du åbne det igen og svare at du vil åbne regnearket Med makroer. Det virker hos mig!
| |
| Kommentar Fra : sion |
Dato : 24-10-06 10:54 |
|
Ja det er naturligvis Range("G1") i stedet for Range("A1"). Og som zakia også siger, skal du have aktiveret makroer.
Jeg har lagt regnearket her: http://www.plan.aau.dk/~06vt0804/kandu.xls
Bemærk at det også indeholder svar på andre spørgsmål. Af samme årsag har jeg brugt G31 i stedet for G1, men det fremgår også tydeligt i regnearket.
Simon
| |
| Kommentar Fra : CLAN |
Dato : 24-10-06 16:08 |
|
Hej Simon
Ja du står nok til at få points, pyt med celler A,B,C 1,2,3 osv. det kan jeg jo altid ændre
Lige et lille tillægsspørgsmål... for det er faktisk det, jeg skal bruge i den aktuelle situation.
Din VBA tæller fint op, når man gemmer regnearket (hvis man har lavet ændringer osv.), men jeg er ude efter, at det tæller op selv om der ikke gemmes ændringer.
Forstået på denne måde:
- Jeg har lavet et ordresedel lay-out med et nummer i øverste højre hjørne.
- Når man åbner denne "formular" tæller nummeret (Ordre Nummer) op med 1.
- Man indtaster sin tekst, udskriver, og lukker ned uden at gemme.
- Næste gang der åbnes, skal der så tælles op igen, og man kan lave ny tekst.
Håber du er med på hvad jeg er ved at "strikke" sammen
Mvh
Søren
| |
| Kommentar Fra : sion |
Dato : 24-10-06 16:14 |
|
Jeg forstår... men umiddelbart tror jeg ikke, det kan fungere.
Jeg kigger på det senere i aften.
Simon
| |
| Kommentar Fra : CLAN |
Dato : 24-10-06 17:22 |
|
Simon... det ved jeg det kan, men den formel jeg har, i det eksisterende kommer op med run time error og en masse andet skrammel, som jeg ikke forstår en dyt af
Kode Sub Auto_Open()
'
' Makro til håndtering af serienumre.
' Den er semistabil, men kan let omgåes
'
'
'Det her filnavn skal laves om.
FilePath = "C:\ordreseddel"
FileNameStationary = "ordreseddel.xls"
If ActiveWorkbook.Name = FileNameStationary Then
Sheets("Til Chauffør").Select
Range("G1").Select
TempSerialNumber = ActiveCell.FormulaR1C1
TempSerialNumber = TempSerialNumber + 1
ActiveCell.FormulaR1C1 = TempSerialNumber
'Og det skal det her da også
FileNameActual = FilePath + ActiveCell.FormulaR1C1 + ".xls"
ActiveWorkbook.Save
ActiveWorkbook.SaveAs FileName:= _
FileNameActual, FileFormat:= _
xlWorkbookNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
End If
End Sub |
Måske du kan hitte rundt i det?
Hygge...
Søren
NB: Kaster lidt flere points i puljen senere
| |
| Kommentar Fra : e.c |
Dato : 24-10-06 20:41 |
|
Idé:
Autorun open med focus på tallet > focus væk = optælling
Så skal der bare sørges for at der ikke kommer focus før næste start
Det var lige en ugennemtænkt idé
| |
| Accepteret svar Fra : sion | Modtaget 360 point Dato : 24-10-06 21:23 |
|
Tilføj denne kode, som aktiveres, når regnearket lukkes:
Kode Private Sub Workbook_BeforeClose(Cancel As Boolean)
Range("G33").ClearContents
ActiveWorkbook.Save
End Sub |
Koden sletter G33 og gemmer regnearket.
G33 er et eksempel på den tekst, som skrives på ordresedlen, og som slettes efter udskrift (ved lukning).
Du kan selv eksperimentere med Private Sub Workbook_BeforePrint(Cancel As Boolean) - måske er det bedre at have noget kode i sammenhæng med udskriften.
Den gamle kode skal blive stående:
Kode Private Sub Workbook_Open()
Range("G31") = Range("G31") + 1
End Sub |
Jeg har opdateret filen på http://www.plan.aau.dk/~06vt0804/kandu.xls
Simon
| |
| Kommentar Fra : sion |
Dato : 24-10-06 21:27 |
|
Håber du kan bruge den seneste idé... jeg fik den, mens jeg var til fodboldtræning. Derfor har jeg ikke lige sat mig ind i den kode, du skrev kl. 17:22.
Simon
| |
| Godkendelse af svar Fra : CLAN |
Dato : 25-10-06 19:41 |
|
Tak for svaret Simon
Idéen med at slette er skam fin nok, men jeg skal lige "lege" lidt først, da der er en del formler som skal bevares.
Takker for dit input og hjælp i det hersens VBA
Hygge... og fortsat god dag
Søren
| |
| Kommentar Fra : sion |
Dato : 25-10-06 20:14 |
|
Du kan så eventuelt lave et "Ark 2", som indeholder den tomme ordreseddel. I VBA-koden skal du så bare kopiere indholdet af Ark 2 til Ark 1 - blot skal ordrenummeret i Ark 1 selvfølgelig ikke ændres.
God fornøjelse
Simon
| |
| Kommentar Fra : sion |
Dato : 16-11-06 11:12 |
| | |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|