Avatar billede scifo Nybegynder
24. september 2009 - 21:54 Der er 5 kommentarer og
1 løsning

Sammensmeltning af kode

Hej Eksperter.

Jeg har følgende kodestump, som jeg ikke kan få til at virke, jeg har ikke kodet VB før, så er meget på bar bund.

Min opbygning af arket ser således ud:
-----------------------------------------
|    C    |    D    |    E    |    F    |
-----------------------------------------
| Felt 1  | Felt 2  | Brugern.| Idag    |
-----------------------------------------

Og laver man så en rettelse i enten felt 1 eller 2, skal
den indsætte Bnavn og Dagsdato.


Private Sub Worksheet_Change(ByVal Target As Range)
'Sæt variabler
Dim idag As Date
    idag = Format(Now, "dd-mm-yy")                  'sætter dags dato
    bruger = Application.UserName                  'henter brugernavn

If Intersect(Target, Range("C4:C8,C12:C24,C28:C30,C34:C41,C45:C46,C50,C54,C58:C60")) Is Nothing Then
    Target.Offset(0, 3) = idag
    Target.Offset(0, 2) = bruger
ElseIf Intersect(Target, Range("D4:D8,D12:D24,D28:D30,D34:D41,D45:D46,D50,D54,D58:D60")) Is Nothing Then
    Target.Offset(0, 2) = idag
    Target.Offset(0, 1) = bruger
Else: Exit Sub

End If

End Sub

-------

Håber i kan hjælpe mig.

Med venlig hilsen
Scifo
Avatar billede kabbak Professor
24. september 2009 - 22:20 #1
Jeg ville nok lave den sådan her:


Private Sub Worksheet_Change(ByVal Target As Range)
'Sæt variabler
Dim idag As Date
    idag = Format(Now, "dd-mm-yy")                  'sætter dags dato
    bruger = Application.UserName                  'henter brugernavn

If Intersect(Target, Range("C4:C8,C12:C24,C28:C30,C34:C41,C45:C46,C50,C54,C58:C60")) Is Nothing Then
    Target.Offset(0, 3) = idag
    Target.Offset(0, 2) = bruger
Exit Sub
End if

If Intersect(Target, Range("D4:D8,D12:D24,D28:D30,D34:D41,D45:D46,D50,D54,D58:D60")) Is Nothing Then
    Target.Offset(0, 2) = idag
    Target.Offset(0, 1) = bruger
Exit Sub
End If

End Sub
Avatar billede scifo Nybegynder
25. september 2009 - 20:07 #2
Den kode giver mig samme problem som det jeg har i forvejen, den laver en uendelig løkke det første lange stykke smider datoen ind på hver 3 felt, og til sidst crasher excel.

Dette sker i hvert fald når jeg gør det hos mig, ved ikke om du har en anden reaktion?
Avatar billede kabbak Professor
27. september 2009 - 21:10 #3
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Or Target.Column = 4 Then
        Dim Kolonne As Integer
        If Intersect(Target, Range("C4:D8,C12:D24,C28:D30,C34:D41,C45:D46,C50:D50,C54:D54,C58:D60")) Is Nothing Then

            If Target.Column = 3 Then Kolonne = 2 Else Kolonne = 1
            Target.Offset(0, Kolonne + 1) = Format(Now, "dd-mm-yy")
            Target.Offset(0, Kolonne) = Application.UserName
        End If

    End If
End Sub


hvis den skal virke modsat, altså inden for området, skal der et NOT ind her

        If Not Intersect(Target, Range("C4:D8,C12:D24,C28:D30,C34:D41,C45:D46,C50:D50,C54:D54,C58:D60")) Is Nothing Then
Avatar billede scifo Nybegynder
09. februar 2010 - 11:20 #4
Har fået det til at virke, beklager mit senere svar, men bare lig et svar, så får du point :) tak for hjælpen.
Avatar billede kabbak Professor
09. februar 2010 - 20:08 #5
;-))
Avatar billede kabbak Professor
09. februar 2010 - 20:08 #6
et svar
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
Kurser inden for grundlæggende programmering

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