• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Range entries dynamisch maken VBA

  • Onderwerp starter Onderwerp starter TMD
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

TMD

Gebruiker
Lid geworden
27 jul 2015
Berichten
52
Hallo,

Ik heb onderstaande code gemaakt en deze werkt perfect. Echter gaat hij alle entries af die ik heb ingegeven achter 'For X = 2 To 100' terwijl het er soms 92 en soms 110. Wanneer het er nu 92 zijn dan maakt het systeem 8 lege mailtjes, niet het grootste probleem in de wereld maar wel onhandig. Is er een manier om dit dynamisch te maken zodat hij altijd de hoeveelheid entries pakt die in het bestand staan?


Code:
Sub ORG_Generate_per_dept()

Application.DisplayAlerts = False
Application.ScreenUpdating = False

AWBN = ActiveWorkbook.Name

Sheets("Hulpsheet").Select

DBL = Sheets("Hulpsheet").Cells(Rows.Count, "A").End(xlUp).Row

For X = 2 To 100  
STORENAME = Sheets("Hulpsheet").Cells(X, 2)
STORE = Application.IfError(Application.VLookup(STORENAME, Sheets("Stores").Range("A:B"), 2, 0), "") 
DEPTNAME = Sheets("Hulpsheet").Cells(X, 3)
DEPT = Application.IfError(Application.VLookup(DEPTNAME, Sheets("Stores").Range("D:E"), 2, 0), "") 

Sheets.Add.Name = STORE & " " & DEPT & " " & FormatDateTime(Date, vbShortDate)

Sheets("sheet1").Select
Selection.AutoFilter Field:=1, Criteria1:=STORENAME    
Selection.AutoFilter Field:=2, Criteria1:=DEPTNAME

Sheets("sheet1").Range("A:O").Select
Selection.Copy Destination:=Sheets(STORE & " " & DEPT & " " & FormatDateTime(Date, vbShortDate)).Range("A1")
Sheets(STORE & " " & DEPT & " " & FormatDateTime(Date, vbShortDate)).Select
Sheets(STORE & " " & DEPT & " " & FormatDateTime(Date, vbShortDate)).Copy

      
    ActiveWorkbook.SaveAs Filename:= _
        "H:\" & STORE & " " & DEPT & " " & FormatDateTime(Date, vbShortDate) & ".xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False

Windows(STORE & " " & DEPT & " " & FormatDateTime(Date, vbShortDate) & ".xlsx").Close , savechanges:=False
Windows(AWBN).Activate
Sheets(STORE & " " & DEPT & " " & FormatDateTime(Date, vbShortDate)).Delete

NTFind = Sheets("Email").Cells(Rows.Count, "A").End(xlUp).Row

Y = 2 
Do While Y <= NTFind
If Sheets("Email").Cells(Y, 2) = STORENAME And Sheets("Email").Cells(Y, 1) = DEPTNAME Then
MAILNAME = Sheets("Email").Cells(Y, 1)
MAILADRESS = Sheets("Email").Cells(Y, 5)

End If
Y = Y + 1
Loop


    Dim OutApp As Object
    Dim OutMail As Object

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

        On Error Resume Next
        With OutMail
            .To = MAILADRESS
            .Subject = " & STORE & " " & DEPT
            .HTMLBody = "<HTML><BODY>Test.</BODY></HTML>"
            .Attachments.Add ("H:\" & STORE & " " & DEPT & " " & FormatDateTime(Date, vbShortDate) & ".xlsx")
            .Display   'or use .Send
        End With
        On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
   
Sheets("sheet1").Select
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
   
Next

End Sub
 
Is dat niet een kwestie van deze aanpassing? (Waarom haal je anders het laatste rijnummer op?)
Code:
For X = 2 To DBL
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan