Avatar billede ExcelJ95 Seniormester
17. december 2018 - 10:29 Der er 20 kommentarer og
1 løsning

VBA kode til kalender.

Hej.

Jeg er ved at lave en opgaveoversigt over mine kundetilbud.

Indtil nu har jeg manuelt lavet en kalender, som i kolonne A37  har kundenavne, og så fra B37 til og med QQ37 har jeg de forskellige opgaver på kunden - altså resten af året og så hele 2019.

opgaverne på kunderne er er inden for 8 forskellige kategorier:

Ansøgning
Tilmelding til besigtigelse
Besigtigelse
Tilbuds fase
Spørge frist
Tilbuds frist
Tildeling
Opstart


Det jeg gerne vil er, at jeg vil lave en boks øverst i arket, hvor jeg kan udfylde kundenavn og dato for de forskellige opgavekategorier, så excel selv plotter dataene ind på de rigtige pladser nede i min oversigt/kalender.

Er der nogen, som har et bud på noget kode til sådan en opgave?

Mvh.
Jakob.
Avatar billede igoogle Forsker
17. december 2018 - 11:03 #1
Bryd opgaven ned i bider

1 Find kunde række
2 Find dato kolonne
3 Samle informationer fra input
4 Test af felt er frit

4A) Indsæt string i feltet (kunderække, Dato kolonne)
4B) indsæt string i forlængelse af nuværende værdi.

5 Ryd input
Avatar billede ExcelJ95 Seniormester
17. december 2018 - 11:11 #2
Jeg går ud fra, for at få excel til at finde en celle på kryds af kundenavn og dato, at jeg ar nødt til at definere navne for alle kolonner datoerne og kundenavnene står i.

Kan man automatiserer den proces? - der er jo nemlig ret mange datoer, når oversigten dækker over hele 2019.
Avatar billede Jan Hansen Ekspert
17. december 2018 - 11:49 #3
1. jeg ville nok bruge en userform
2. Hvis du skal have hjælp til det er vi nok nød til at have dit ark. (dropbox eller lignende)

Jan
Avatar billede ExcelJ95 Seniormester
17. december 2018 - 12:04 #4
Jamen det får i da bare her :)

https://we.tl/t-vjwM9VzUh6
Avatar billede Jan Hansen Ekspert
17. december 2018 - 14:29 #5
Har prøvet at lave noget der måske kan bruges

kun kunde og 1. punkt lavet

vba koden ligger i arket

https://1drv.ms/x/s!AmlqgsyjsAq5hZEJ80O-dQ08kSIVVg

Jan
Avatar billede ExcelJ95 Seniormester
17. december 2018 - 23:36 #6
Hej igen Jan.

Tak for svar!

Hvis jeg skal skrive videre på koden for at fortsætte med de andre punkter; er vi så enige om, at jeg blot skal ændre C3 til C4 og B3 til B4 osv. i dette stykke:
If Not Intersect(Target, Range("C3")) Is Nothing Then
        Dato = Target
        For Each rCell In rDato
            If rCell.Value = Dato Then
                iColumn = rCell.Column
                Exit For
            End If
        Next rCell
        ws.Cells(iRow, iColumn).Value = ws.Range("B3").Value
    End If
End Sub

Eller hvad? fordi når jeg gør det kan jeg ikke få den til at virke.
Derudover skal jeg også spørge om du vil forslå at jeg kopierer koden og sætter den ind længere nede i samme modul og blot ændrer variablerne - eller om jeg skal skrive den ind i et nyt modul hver gang variablerne skal laves om?

jakob.
Avatar billede Jan Hansen Ekspert
18. december 2018 - 00:18 #7
prøv filen igen nu har jeg lavet den så den virker hele vejen

https://1drv.ms/x/s!AmlqgsyjsAq5hZEJ80O-dQ08kSIVVg

jeg har lavet en function ("Tjek") med 3 input variable, på denne måde skal koden kun skrives engang og få så input af Target- og tjekdato- og tekst-Cellen

Jan
Avatar billede Jan Hansen Ekspert
18. december 2018 - 01:01 #8
Avatar billede ExcelJ95 Seniormester
18. december 2018 - 09:34 #9
Hej igen Jan!

Det er rigtigt godt det her!!

Hvis jeg gerne i fremtiden vil ændre eller tilføje i mine kategorier, så tilføjer jeg bare en ekstra linje med: Tjek Target, ws.Range("C9"), ws.Range("B9") - og så den nye celle, hvis jeg fx. skal tilføje en kategori mere? :)

Jeg skal også lige høre, fordi lige nu afspiller komandoen/makroen sig i det øjeblik jeg flytter mig fra celle B2 - kan jeg modificere koden, så den først aktiveres når jeg enten trykker afspil makro eller trykker på en given knap?
Avatar billede Jan Hansen Ekspert
18. december 2018 - 10:08 #10
1. ja
2. det kan man godt så skal koden bare ændres lidt
3. jeg har lavet en ver hvor man låses til kun at kunne taste i indtastningscellerne hvis knap stå på "Tab til"
https://1drv.ms/x/s!AmlqgsyjsAq5hZENMowxV94ZZoVonA

Skal jeg prøve at lave en der er med knap og skal 3. være med?


Jan
Avatar billede ExcelJ95 Seniormester
18. december 2018 - 10:34 #11
Hej Jan.

I mit endelige produkt forestiller jeg mig, at jeg har en knap, som afspiller min makro. Jeg forestiller mig også, at den selv sletter indholdet i cellerne: B2:B9 og C3:C9 - når de er indsat i arket nedenunder.

Yderligere ville jeg gerne hvis dataene som bliver indsat nede i arket under, er samme format som den tekst der står i de respektive celler til venstre: A3:A9. - Kan se du allerede har fikset farven på cellen, men teksten og kanten måtte også gerne være det samme.

Dertil har jeg et sidste spørgsmål - hvordan kan jeg gøre det, hvis jeg har en begivenhed som strækker sig over flere datoer? fx: besigtigelse fra d.07/10/2018-13/10/2018.

På forhånd tak.
Avatar billede Jan Hansen Ekspert
18. december 2018 - 11:00 #12
1. Format kan fikses!!
2. ang, fleredatoer er vi ude i flet celler som kan være problematiske
3. Hvad med rettelser/sletning?
4. skal det være så kun celler b2:B9 og C3:C9 skal kunne skrives i / bruge Tab/Enter til at komme fra den ene celle til den næste?

Vil gerne have så stor viden så jeg ikke laver kode der giver problemer senere!!

Jan
Avatar billede ExcelJ95 Seniormester
18. december 2018 - 11:24 #13
Jeg er er ikke helt med på hvad du spørger om angående rettelser/sletning.

Og hvis jeg har forstået spørgsmål 4 rigtigt - så er det meningen at det kun er cellerne B2-B9 og C3-C9 der sendes ned i arket ja - men arket skal ikke nødvendigvis være låst, så det kun er de nævnte celler man kan skrive i, nej.
Avatar billede Jan Hansen Ekspert
18. december 2018 - 11:40 #14
De formateringer evt fletninger er svære at komme af med, så når de er overført med din knap så vil jeg gerne vide om det skal være sådan at hvis du skriver kunden igen for at rette eller slette oplysninger, er det en situation jeg skal tage højde for?

B2-B9 overføres C3-C9 bruges til at finde kolonnen hvor B3-B9 skrives!!

Jan
Avatar billede ExcelJ95 Seniormester
18. december 2018 - 11:45 #15
Det er ikke så vigtigt at der er en automatisk rettefunktion. Hvis der skal rettes nede i oversigten så gør jeg det bare manuelt :)
Avatar billede Jan Hansen Ekspert
18. december 2018 - 11:54 #16
ok, kommer med et bud senere

Jan
Avatar billede Jan Hansen Ekspert
18. december 2018 - 14:11 #17
Avatar billede ExcelJ95 Seniormester
18. december 2018 - 14:42 #18
Jeg får fejlkoden:

Fejl på kørselstidspunktet: '1004':

Der opstod fejl i metoden 'Run' for objektet 'cmOverfør'

og den henviser til:
".Run" i tredje sidste linje i dette modul:

Dim MyOverfør As New cmOverfør
Sub Overfør()
    If Range("B2") = "" Then
        MsgBox "Der skal være en kunde!!"
        Exit Sub
    End If
    With MyOverfør
        .Kunde = Range("B2")
        .DatoOmråde = Range("B22:QQ22")
        .KundeOmråde = Range("A23:A47")
        .Run
    End With
End Sub

jakob
Avatar billede Jan Hansen Ekspert
18. december 2018 - 16:54 #19
hvad/hvor meget havde du udfyldt?

skal nok have en error handler ind!!
Jan
Avatar billede Jan Hansen Ekspert
18. december 2018 - 17:03 #20
Og hvordan skriver du datoerne de skal have formatet dd-mm-åååå
det er vel ikke hen over årsskifte da din årsskiftekolonne vil give problemer!!

Jan
Avatar billede ExcelJ95 Seniormester
18. december 2018 - 17:46 #21
Jeg havde bare udfyldt den første kategori  og datoen: 07-10-2018.
Men det kommer uanset hvordan jeg prøver at skrive datoen.
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

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