Avatar billede tville Juniormester
04. september 2015 - 15:07 Der er 5 kommentarer og
1 løsning

flere kriterier i for each

Hej

Jeg laver et udtræk fra et regneark med nedenstående kode. Jeg udvælger posterne med en 'for each' og her vil jeg gerne have en ekstra kontrol ind. Jeg vil kun have poster med, hvor der er i feltet i kolonne a er indtastet en værdi. Hvordan får jeg sådan en ekstra kontrol ind?

Sub OpdaterStartDenneMåned()

Dim c As Excel.Range
Dim i As Integer
Dim antrk1 As Integer
Dim antrk2 As Integer

antrk2 = Worksheets("StartDenneMåned").UsedRange.Rows.Count 'tæller antal rækker i det ark data skal placeres


Worksheets("StartDenneMåned").Range("a6:a" & antrk2).EntireRow.Delete 'sletter de gamle rækker data med start i A4

antrk1 = Worksheets("Placering").UsedRange.Rows.Count 'tæller antal rækker i arket placering


i = 5 'angiver startrækkenr hvor data skal indsættes
    For Each c In Worksheets("Placering").Range("d6:d" & antrk1).Cells 'range skal være den kolonne der indeholder kriteriet der tjekkes
          If Month(c.Value) = Month(Date) Then
          If Year(c.Value) = Year(Date) Then
        i = i + 1
            Worksheets("StartDenneMåned").Range("a" & i).Value = c.Offset(0, -3).Value '3 kolonner til venstre for kolonne c, hvor datoen står i
            Worksheets("StartDenneMåned").Range("b" & i).Value = c.Offset(0, 2).Value
            Worksheets("StartDenneMåned").Range("c" & i).Value = c.Offset(0, 11).Value '10 kolonner til højre for kolonne c, hvor datoen står i
            Worksheets("StartDenneMåned").Range("d" & i).Value = c.Offset(0, 0).Value 'den kolonne hvor datoen står i
           
        End If
        End If
    Next

antrk3 = Worksheets("StartDenneMåned").UsedRange.Rows.Count 'tæller antal rækker efter at data er placeret

Worksheets("StartDenneMåned").Range("a5:d" & antrk3).Select
Avatar billede supertekst Ekspert
04. september 2015 - 15:48 #1
..
..
    For Each c In Worksheets("Placering").Range("d6:d" & antrk1).Cells 'range skal være den kolonne der indeholder kriteriet der tjekkes
        If Cells(c.Row, 1) <> "" Then    '<+++
          If Month(c.Value) = Month(Date) Then
          If Year(c.Value) = Year(Date) Then
        i = i + 1
            Worksheets("StartDenneMåned").Range("a" & i).Value = c.Offset(0, -3).Value '3 kolonner til venstre for kolonne c, hvor datoen står i
            Worksheets("StartDenneMåned").Range("b" & i).Value = c.Offset(0, 2).Value
            Worksheets("StartDenneMåned").Range("c" & i).Value = c.Offset(0, 11).Value '10 kolonner til højre for kolonne c, hvor datoen står i
            Worksheets("StartDenneMåned").Range("d" & i).Value = c.Offset(0, 0).Value 'den kolonne hvor datoen står i
           
        End If
        End If
        End If  '<+++
Avatar billede tville Juniormester
08. september 2015 - 15:23 #2
Hej

Det ser ud til at den hopper alle rækker over. Kan det være fordi at jeg definerer c til at være kolonne d?
Kigger den linie du sætter ind "If Cells(c.row, 1)<> "" then" så ikke på kolonne d?
Avatar billede supertekst Ekspert
08. september 2015 - 17:34 #3
Meningen var at jeg refererer til kolonne 1 (A) i den aktuelle celles række iflg. "c" (For each c...)
Avatar billede tville Juniormester
09. september 2015 - 08:47 #4
Det fungerer ikke rigtig.
Avatar billede supertekst Ekspert
09. september 2015 - 10:51 #5
Hvis det er muligt - så er du velkommen til at sende filen/uploade den. @-adresse under min profil.
Avatar billede tville Juniormester
18. november 2015 - 09:48 #6
Ikke længere relevant
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