Avatar billede Laugesen1 Mester
28. januar 2014 - 00:17 Der 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 ?

Laugesen
Avatar billede kabbak Professor
28. januar 2014 - 07:17 #1
Dim Uge As String
Uge = InputBox("Indtast ugenummer", "Uge")
If Uge = "" Then Exit Sub



Workbooks("StamExcel."& Uge & ").Sheets("Kreditkort").Activate
If Workbooks("StamExcel."& Uge & "").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 ......
Avatar billede Laugesen1 Mester
28. januar 2014 - 18:24 #2
Tak for dit input.

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............

Har du et bud på hvad der er galt ?
Avatar billede kabbak Professor
28. januar 2014 - 19:55 #3
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
Avatar billede Laugesen1 Mester
28. januar 2014 - 21:41 #4
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 ?
Avatar billede kabbak Professor
28. januar 2014 - 22:07 #5
If .Cells(i, 3) = "" _
And .Cells(i, 7) = "02574" And .Cells(i, 4) >= DateValue(Dato) _
And .Cells(i, 5) >= TimeValue(Tid ) Then

sådan skal den være

er du sikker på at "02574" er tekst, hvis det er formateret tal, skal det være 2574
Avatar billede Laugesen1 Mester
29. januar 2014 - 01:17 #6
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester