Avatar billede Robspierre Nybegynder
17. januar 2013 - 01:24 Der er 9 kommentarer og
1 løsning

Hjælp til at lave makroer i Excel

jeg har et regneark, som vi bruger til tilbudberegning. Det er temmelig avanceret, hvilket betyder at det efterhånden er lidt omstændigt at bruge. Jeg kan se at det ville være nyttigt at få lagt nogle makro'er ind, så kommunikationen mellem vore regneark ville blive nemmere. Jeg arbejder på at kunne kopiere et område fx. A2:G16 i mit aktive ark til et bestemt sted i et andet ark? Når jeg kører nedenstående i en separat SUB, fungere det fint, men når jeg sætter det ind i en anden Makro får jeg pludselig forskellige fejl, på trods af at den anden Makro forinden virker korrekt.

    Range("A2:G16").Select
    Selection.Copy
    Sheets("Compare").Select
    Range("B3").Select
    ActiveSheet.PasteSpecial
    Range("A2").Select


Dette her er den anden Makro som ellers virker fint, så længe jeg ikke sætter ovenstående ind i den...? Kan nogen hjælpe?
Sub Mail_Range()
'Working in 2000-2010
    Dim Source As Range
    Dim Dest As Workbook
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim i As Long

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

'kopierer leverandør oplysninger ind
  Sheets("RFQ").Select
    Range("J13").Select
    'Range(Selection, Selection.End(xlDown)).Select
    'Range("J13").Select
    Selection.Copy
    Sheets("RFQ").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues
 
  Sheets("RFQ").Select
    Range("J12").Select
    Selection.Copy
    Sheets("RFQ").Select
    Range("B9").Select
    Selection.PasteSpecial Paste:=xlPasteValues
   
  Sheets("RFQ").Select
    Range("J11").Select
    Selection.Copy
    Sheets("RFQ").Select
    Range("B10").Select
    Selection.PasteSpecial Paste:=xlPasteValues
   
  Sheets("RFQ").Select
    Range("J10").Select
    Selection.Copy
    Sheets("RFQ").Select
    Range("B11").Select
    Selection.PasteSpecial Paste:=xlPasteValues
   
  Sheets("RFQ").Select
    Range("J9").Select
    Selection.Copy
    Sheets("RFQ").Select
    Range("E16").Select
    Selection.PasteSpecial Paste:=xlPasteValues
   
  Sheets("RFQ").Select
    Range("J8").Select
    Selection.Copy
    Sheets("RFQ").Select
    Range("F15").Select
    Selection.PasteSpecial Paste:=xlPasteValues
'Slut på kopiering af leverandøroplysninger
    'Start

Set Source = Nothing
    On Error Resume Next
    Set Source = Range("A1:G45").SpecialCells(xlCellTypeVisible)
    On Error GoTo 0

    If Source Is Nothing Then
        MsgBox "The source is not a range or the sheet is protected, " & _
              "please correct and try again.", vbOKOnly
        Exit Sub
    End If

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

Set Dest = Workbooks.Add(xlWBATWorksheet)
    Source.Copy
    With Dest.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial Paste:=xlPasteValues
        .Cells(1).PasteSpecial Paste:=xlPasteFormats
        .Cells(1).Select
        Application.CutCopyMode = False
    End With

    If Val(Application.Version) < 12 Then
        'You use Excel 2000-2003
        FileExtStr = ".xls": FileFormatNum = -4143
    Else
        'You use Excel 2007-2010
        FileExtStr = ".xlsm": FileFormatNum = 52
    End If

    With Dest
        .SaveAs ThisWorkbook.Path & "\" & ThisWorkbook.Sheets("RFQ").Range("A2") & FileExtStr, FileFormat:=FileFormatNum
                On Error Resume Next
        For i = 1 To 3
            .SendMail "", _
                      "This is the Subject line"
            If Err.Number = 0 Then Exit For
        Next i
        On Error GoTo 0
        .Close SaveChanges:=False
    End With
    'Delete the file you have send
  'Kill TempFilePath & TempFileName & FileExtStr Er ikke anvent i denne makro
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub
Avatar billede supertekst Ekspert
17. januar 2013 - 10:19 #1
Hvor sætter du den nævnte kode ind og hvilke fejl opstår?

og så velkommen til Eksperten..
Avatar billede Robspierre Nybegynder
17. januar 2013 - 12:50 #2
Jo tak. :-)
Jeg sætter den øverste kode ind der hvor der står 'Start
Avatar billede supertekst Ekspert
17. januar 2013 - 13:37 #3
Ok - skal prøve at se på det senere - sidder midt i en kundeopgave..
Avatar billede supertekst Ekspert
17. januar 2013 - 17:53 #4
Et forsøg - fejler ved gem ny fil..
Hvor har du placeret koden?

Sub Mail_Range()
'Working in 2000-2010
    Dim Source As Range
    Dim Dest As Workbook
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim i As Long

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

'kopierer leverandør oplysninger ind
  Sheets("RFQ").Select
    Range("J13").Select
    'Range(Selection, Selection.End(xlDown)).Select
    'Range("J13").Select
    Selection.Copy
    Sheets("RFQ").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues
 
  Sheets("RFQ").Select
    Range("J12").Select
    Selection.Copy
    Sheets("RFQ").Select
    Range("B9").Select
    Selection.PasteSpecial Paste:=xlPasteValues
   
  Sheets("RFQ").Select
    Range("J11").Select
    Selection.Copy
    Sheets("RFQ").Select
    Range("B10").Select
    Selection.PasteSpecial Paste:=xlPasteValues
   
  Sheets("RFQ").Select
    Range("J10").Select
    Selection.Copy
    Sheets("RFQ").Select
    Range("B11").Select
    Selection.PasteSpecial Paste:=xlPasteValues
   
  Sheets("RFQ").Select
    Range("J9").Select
    Selection.Copy
    Sheets("RFQ").Select
    Range("E16").Select
    Selection.PasteSpecial Paste:=xlPasteValues
   
  Sheets("RFQ").Select
    Range("J8").Select
    Selection.Copy
    Sheets("RFQ").Select
    Range("F15").Select
    Selection.PasteSpecial Paste:=xlPasteValues
'Slut på kopiering af leverandøroplysninger
 
'Start
    Worksheets("Ark1").Select    'det aktive ark
    Range("A2:G16").Select
    Selection.Copy
    Sheets("Compare").Select
    Range("B3").Select
    ActiveSheet.PasteSpecial
    Range("A2").Select

Set Source = Nothing
    On Error Resume Next
    Set Source = Range("A1:G45").SpecialCells(xlCellTypeVisible)
    On Error GoTo 0

    If Source Is Nothing Then
        MsgBox "The source is not a range or the sheet is protected, " & _
              "please correct and try again.", vbOKOnly
        Exit Sub
    End If

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

Set Dest = Workbooks.Add(xlWBATWorksheet)
    Source.Copy
    With Dest.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial Paste:=xlPasteValues
        .Cells(1).PasteSpecial Paste:=xlPasteFormats
        .Cells(1).Select
        Application.CutCopyMode = False
    End With

    If Val(Application.Version) < 12 Then
        'You use Excel 2000-2003
        FileExtStr = ".xls": FileFormatNum = -4143
    Else
        'You use Excel 2007-2010
        FileExtStr = ".xlsm": FileFormatNum = 52
    End If

    With Dest
        .SaveAs ThisWorkbook.Path & "\" & ThisWorkbook.Sheets("RFQ").Range("A2") & FileExtStr, FileFormat:=FileFormatNum
                On Error Resume Next
        For i = 1 To 3
            .SendMail "", _
                      "This is the Subject line"
            If Err.Number = 0 Then Exit For
        Next i
        On Error GoTo 0
        .Close SaveChanges:=False
    End With
    'Delete the file you have send
  'Kill TempFilePath & TempFileName & FileExtStr Er ikke anvent i denne makro
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub
Avatar billede store-morten Ekspert
17. januar 2013 - 19:04 #5
Et forsøg fra mig.
Skal lægges i et Modul.
Sub Mail_Range()
'Working in 2000-2010
    Dim Source As Range
    Dim Dest As Workbook
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim i As Long

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

'kopierer leverandør oplysninger ind
  Sheets("RFQ").Range("J13").Copy
    Sheets("RFQ").Range("A2").PasteSpecial Paste:=xlPasteValues

  Sheets("RFQ").Range("J12").Copy
    Sheets("RFQ").Range("B9").PasteSpecial Paste:=xlPasteValues

  Sheets("RFQ").Range("J11").Copy
    Sheets("RFQ").Range("B10").PasteSpecial Paste:=xlPasteValues

  Sheets("RFQ").Range("J10").Copy
    Sheets("RFQ").Range("B11").PasteSpecial Paste:=xlPasteValues

  Sheets("RFQ").Range("J9").Copy
    Sheets("RFQ").Range("E16").PasteSpecial Paste:=xlPasteValues

  Sheets("RFQ").Range("J8").Copy
    Sheets("RFQ").Range("F15").PasteSpecial Paste:=xlPasteValues
'Slut på kopiering af leverandøroplysninger

'Start
    Sheets("RFQ").Range("A2:G16").Copy
    Sheets("Compare").Range("B3").PasteSpecial
   
    Sheets("Compare").Select
    Range("A2").Select

Set Source = Nothing
    On Error Resume Next
    Set Source = Range("A1:G45").SpecialCells(xlCellTypeVisible)
    On Error GoTo 0

    If Source Is Nothing Then
        MsgBox "The source is not a range or the sheet is protected, " & _
        "please correct and try again.", vbOKOnly
            With Application
                .ScreenUpdating = True
                .EnableEvents = True
            End With
        Exit Sub
    End If

Set Dest = Workbooks.Add(xlWBATWorksheet)
    Source.Copy
    With Dest.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial Paste:=xlPasteValues
        .Cells(1).PasteSpecial Paste:=xlPasteFormats
        .Cells(1).Select
        Application.CutCopyMode = False
    End With

    If Val(Application.Version) < 12 Then
        'You use Excel 2000-2003
        FileExtStr = ".xls": FileFormatNum = -4143
    Else
        'You use Excel 2007-2010
        FileExtStr = ".xlsm": FileFormatNum = 52
    End If

    With Dest
        .SaveAs ThisWorkbook.Path & "\" & ThisWorkbook.Sheets("RFQ").Range("A2") & FileExtStr, FileFormat:=FileFormatNum
                On Error Resume Next
        For i = 1 To 3
            .SendMail "", _
                      "This is the Subject line"
            If Err.Number = 0 Then Exit For
        Next i
        On Error GoTo 0
        .Close SaveChanges:=False
    End With
    'Delete the file you have send
    'Kill TempFilePath & TempFileName & FileExtStr Er ikke anvent i denne makro
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub
Avatar billede Robspierre Nybegynder
17. januar 2013 - 23:19 #6
Hej - Tak for hjælpen.
Jeg fik løst problemstillingen.
Du havde ret. Jeg havde placeret koden under det aktive sheet. Efter jeg fik flyttet programkoden til ThisWorkbook, så virkede det hele og mere til :-)
Avatar billede store-morten Ekspert
17. januar 2013 - 23:23 #7
Velkommen på Eksperten.dk

Som spørger, skal du bruge:
Kommentar (til forslag)

Og når du har fået et 'Svar' på dit spørgsmål, du kan bruge,
beder du den der har hjulpet dig, om at lægge et:
Svar (til løsninger og pointgivning)

Her er en lille film om:
Hvordan man accepterer svar på Eksperten.dk
http://www.youtube.com/watch?v=s26DGiuvXBo
Avatar billede Robspierre Nybegynder
18. januar 2013 - 15:19 #8
Kan ikke helt se hvordan pointgivningen fungerer...?
Avatar billede vejmand Juniormester
18. januar 2013 - 15:38 #9
Lol, måske du lige skulle læse #7 én gang til.  :-)
Avatar billede store-morten Ekspert
02. april 2013 - 10:36 #10
Det er fint du har lukket dette spørgmål, men du har taget de udlovede points selv. Prøv at læse #7 en gang til :-)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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