28. januar 2014 - 00:17Der er
5 kommentarer og 1 løsning
Ændre referencen til projektmapper i en makro
Jeg har en makro der hver måned skal flytte data fra 4 - 6 eksterne projektmapper til et destinationsark. Hver måned er det fra nye projektmapper, altså skal referencen til projektmapperne i makroen ændres.
Det eneste i referencen der skal ændres, er de to sidste tegn i filnavnet. Eksempel på reference til projektmappe: StamExcel.40 (data fra uge 40).
Fra to af kildearkene sorteret der for dato og klokkeslæt, så dette skal også ændres i makroen hver måned.
Det kan selvfølgelig gøres manuelt hver måned, men mit spørgsmål er:
Kan man lave en userform, hvor ugenummer indtastes i hvert sit felt og bliver sat ind bagerst i referencen.
Eks. Der indtastes "40" i userformen, og referencen "StamExcel.40" bliver sat ind i makroen. Datoerne og klokkeslæt skal også indtastes i hvert sit felt i userformen og blive indsat i makroen.
Uddrag af makroen:
Workbooks("StamExcel.40").Sheets("Kreditkort").Activate If Workbooks("StamExcel.40").Sheets("Kreditkort").Cells(i, 7).Value = "02574" And Cells(i, 4).Value >= DateValue("01-10-2013") And Cells(i, 5).Value >= TimeValue("21:30:00") Then ......
Er der nogen der ved om det er muligt at lave på den måde ?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Det virker rigtig fint med indsættelse af ugenummer i slutningen af referencen.
Til at starte med, har jeg har lavet det så der kommer en inputbox for hver reference i makroen. Det er vel nogenlunde samme fremgangsmåde, hvis jeg vil lave det samlet i en userform ?
Men jeg har problemer med indsættelse af dato og klokkeslæt, og får en debug med den kode jeg har lavet.
Eksempel:
Dim Dato As String Dim Tid As String
Dato = InputBox("Indtast dato", "Dato") If Dato = "" Then Exit Sub
Tid = InputBox("Indtast klokkeslæt", "Klokkeslæt") If Tid = "" Then Exit Sub
If Workbooks("StamExcel." & Uge & "").Sheets("Kreditkort").Cells(i, 3).Value = "" And Cells(i, 7).Value = "02574" And Cells(i, 4).Value >= DateValue("& Dato ") And Cells(i, 5).Value >= TimeValue("& Tid ") Then............
Du er nødt til at åbne din uge workbook, for at du kan gøre det,
Hvis det virker, kan vi slå skærmopdateringen fra, så ser du ikke at den åbner.
Dim Uge As String, Dato As String, Tid As String, Sti As String
Uge = InputBox("Indtast ugenummer", "Uge") If Uge = "" Then Exit Sub
Dato = InputBox("Indtast dato", "Dato") If Dato = "" Then Exit Sub
Tid = InputBox("Indtast klokkeslæt", "Klokkeslæt") If Tid = "" Then Exit Sub Sti = "C:\data\" Workbooks.Open (Sti & "StamExcel." & Uge & ".xls") ' åben din mappe
With Sheets("Kreditkort") ' resten angår arket "Kreditkort" If .Cells(i, 3) = "" _ And .Cells(i, 7) = "02574" And .Cells(i, 4) >= DateValue("& Dato & ") _ And .Cells(i, 5) >= TimeValue(Tid) Then ' din kode om hvad der skal gøres End If End With
Jeg har kildearket åbent, så indtil videre laver jeg koden uden åben-funktionen. Når jeg har fået indsættelse af dato/klokkeslæt til at fungere, så kan jeg lave koden til at åbne kildearkene.
Jeg får en debug i følgende linjer:
If .Cells(i, 3) = "" _ And .Cells(i, 7) = "02574" And .Cells(i, 4) >= DateValue("& Dato & ") _ And .Cells(i, 5) >= TimeValue("& Tid ") Then
3. linje: Jeg har rettet (TID) til ("& TID ")
Jeg skriver datoen på samme måde som den står i kildearket, men kan det alligevel have noget at gøre med formateringen af dato og klokkeslæt ?
Nu har jeg ændret koden til : DateValue(Dato) og TimeValue(Tid ) - og så virker det efter hensigten.
Nu kan jeg så gå i gang med at sætte det ind i en userform med felter til hver enkelt indtastning af reference og dato/klokkeslæt.
Mange tak for hjælpen :)
Laugesen
Synes godt om
Ny brugerNybegynder
Din løsning...
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.