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

foutmelding met 'lastrow'

Status
Niet open voor verdere reacties.

Bjorkie

Gebruiker
Lid geworden
12 sep 2017
Berichten
147
hey allen.
ik heb ondertussen verschillende infos bekomen, verschillende items op site gevonden,en heb volgend gemaakt:
Code:
Sub Print_Equipment_List()
[U]'Test_1 module[/U]
With ActiveSheet
' select area where C has value in sheet(Camera list)
    Dim LastRow As Long
    LastRow = Range("C" & Rows.Count).End(xlUp).Row
    While Len(Cells(LastRow, 1).Value) = 0
        LastRow = LastRow - 1
    Wend
    Worksheets("Camera list").Range("A4:AO" & LastRow).Name = "copy_Area"
'Copy selected area to sheet(test)
    Sheets("test").Select
    Range("$A:$AZ").Delete
    Sheets("Camera List").Select
    Range("copy_area").Select
    Selection.Copy
    Sheets("test").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End With

[U]'Test_2 module[/U]
    Dim cl As Range
'script to clear empty cells in a range, and move all other to left
    With Sheets("test")
        For Each cl In ActiveSheet.Range("G2:AO250")
            If UCase(cl) = "EMPTY" Or cl = 0 Or cl = "Yes" Or cl = "No" Or cl = "0" Or cl = Numeric Then
              cl = ClearContents
            End If
        Next
' script to move values from range left if Left cell is empty
            Application.EnableEvents = False
                With Range("G2:AO250")
                .Value = .Value
                .SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft
                End With
            Application.EnableEvents = True
        End With
        ActiveSheet.Range("A:A").EntireColumn.Hidden = True
        ActiveSheet.Range("E:E").EntireColumn.Hidden = True
        Worksheets("test").Columns("B:D").AutoFit
        Worksheets("test").Columns("F:W").AutoFit

[U]'Test_3 module[/U]
    With Sheets("test")
    Dim LastRow2 As Long
    LastRow = Range("C" & Rows.Count).End(xlUp).Row
    While Len(Cells(LastRow2, 1).Value) = 0
        LastRow2 = LastRow2 - 1
    Wend
'    .ResetAllPageBreaks ' remove all page breaks from
    Range("B4:W" & LastRow2).Name = "print_Area"
    .PageSetup.PrintArea = "print_Area"
    .PageSetup.FitToPagesWide = 1
    .PageSetup.Zoom = 75
    .PageSetup.Orientation = xlLandscape
    End With
'Print Calculation page
    ActiveSheet.ExportAsFixedFormat 0, Application.GetSaveAsFilename(InitialName, "PDF Files (*.pdf), *.pdf")
    Sheets("test").Select
    Range("$A:$AZ").Clear
End Sub

indien ik elke code afzonderlijk uitoer is er geen probleem. (staan ook als afzonderlijke modules.)
maar hoe kan ik deze 3 modules achter elkaar laten uitvoeren via 1simpele knop in Excel.
 
Zonder een voorbeeld document waar je ook uitlegt wat er precies fout gaat zeg ik dit:

Achter de knop:
Code:
Sub CommandButton1_Click
    Call Macro1
    Call Macro2
    Call Macro3
End Sub
 
sorry, bestandje vergeten toe te voegen.

Bekijk bijlage camera oefening v2.6 - Test.xlsm

ik heb zoals je zult merken 3 modules (Test_1; Test_2; Test_3)
de bedoeling is, dat ik deze alle 3 achter elkaar laat lopen.
als ik ze afzonderlijk uitvoer, werken ze.
echter, indien ik deze smanevoeg in de module 'Print equipment list'-module, dan krijg ik een foutmelding over de lastrow.
ik heb deze al eens aangepast naar 'lastrow2', daar ik in het begin deze functie ook al eens gebruik, maar dan nog op een andere sheet.
hierdoor loopt het ergens mis. maar ik ben te groen om te begrijpen wat hier juist gebeurd.
:rolleyes:
 
Laatst bewerkt:
Het probleem is dat je de Subs dezelfde naam hebt gegeven als de modules.
Geeft de modules dus een andere naam. Bijvoorbeeld Test1, Test2, test3.
Zonder de underscores dus. Dan zijn de namen niet gelijk en zal je zien dat ze wel gevonden worden van achter de knop.

Overigens is het niet nodig om voor iedere Sub een eigen module te maken.
 
Laatst bewerkt:
ok, bedankt alvast.
nu heb ik nog een 'enorm' probleem vastgesteld.
indien ik deze sub dan koppel met de knop op sheet(Camera list),
dan plaatst hij de te kopieren rijen over deze actieve sheet, en niet op de sheet(test)
ook de oorspronkelijke sheet word dan gewist.
wat doe ik hier verkeerd?
 
hey allen,
ik heb het probleem gevonden.
ik moest bij begin van elke sub, nog aangeven welke 'sheet' actief moest zijn via
Code:
Sub Test_3()
    [COLOR="#FF0000"]Sheets("test").Select[/COLOR]
    With ActiveSheet
    Dim LastRow As Long
    LastRow = Range("C" & Rows.Count).End(xlUp).Row
    While Len(Cells(LastRow, 1).Value) = 0
        LastRow = LastRow - 1
    Wend
    .ResetAllPageBreaks ' remove all page breaks from
    Range("B4:W" & LastRow).Name = "print_Area"
    .PageSetup.PrintArea = "print_Area"
    .PageSetup.FitToPagesWide = 1
    .PageSetup.Zoom = 75
    .PageSetup.Orientation = xlLandscape
    End With
'Print Calculation page
    ActiveSheet.ExportAsFixedFormat 0, Application.GetSaveAsFilename(InitialName, "PDF Files (*.pdf), *.pdf")
    Sheets("test").Range("$A:$AZ").Clear
    [COLOR="#FF0000"]Sheets("Camera list").Select[/COLOR]
End Sub
 
Vermijdt Select en Activate.
Gebruik in dit geval:
With Sheets("test")
 
@Edmoor: bednakt voor deze nuttige extra info.
voorlopig werkt het naar wens.
bednkt allen voor de hulp.
:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan