Avatar billede florint Nybegynder
22. maj 2002 - 13:51 Der er 14 kommentarer og
2 løsninger

Makroredigering ?

Hej,
Vi har købt en makro til excell for et stykke tid siden og lagt den ind i excell som et tilføjelsesprogram.
Nu vil vi gerne have tilføjet en enkelt funktion mere, men hvordan og med hvad åbner man sådan en makro ?
/Ivan
Avatar billede Chewie Novice
22. maj 2002 - 13:53 #1
højre klik på arket (nederst på den lille fane) og vælg "vis programkode" !!!
Avatar billede b_hansen Novice
22. maj 2002 - 13:53 #2
tjaah... forudsat den ikke er beskyttet med kodeord, så burde du kunne se den via ALT+F11
Avatar billede somaliomar Praktikant
22. maj 2002 - 13:54 #3
Funktioner -> Makro -> Rediger i Visual Basic eller klik blot på Alt+F11
Avatar billede Chewie Novice
22. maj 2002 - 13:56 #4
der er mange muligheder :o)
Avatar billede b_hansen Novice
22. maj 2002 - 13:58 #5
jep, men de forudsætte alle, at der ikke er et kodeord *S*
Avatar billede florint Nybegynder
22. maj 2002 - 14:20 #6
Hej,
Imponeret !!! Meget hurtig reaktion. Jeg har fået svar på mit spørgsmål, men har lige et tillæg. Jeg giver gerne flere point for det !
Koden underneden er en makro som importerer tekst og tal fra en kommasepareret fil og ordner dem i kolonner så det kan bruges. Nu er det sådan at feltet ANTAL skal hentes et andet sted istedet for som den gør nu. Nu skal den hentes 2 kolonner længere til højre for oprindeligt.

Findes der en genial - enkel og MEGET let måde at gøre det ?

'Sheets("Ark1").Select
    Application.ScreenUpdating = False
    Cells.Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Selection.ClearContents
    ActiveWindow.FreezePanes = False
    If ActiveSheet.Range("A1") <> "" Then
        Columns("A:AY").Delete
        Selection.QueryTable.Delete
        Selection.AutoFilter
    End If
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Danpots\PUDB10.TXT", Destination:=Range("A1"))
        .Name = "PUDB10"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlMSDOS
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .Refresh BackgroundQuery:=False
    End With
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("A1") = "Lev."
    Range("C1") = "Uge"
    Range("E1") = "Navn"
    Range("F1") = "Antal" (Det er denne kolonne det drejer sig om)
    Range("K1") = "Bemærkning"
    Range("P1") = "Pris"
    Range("Q1") = "Rab."
    Range("AK1") = "Potstr."
    ActiveSheet.Rows("1:1").Font.Bold = True
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .MergeCells = False
    End With
    'ActiveSheet.Range("A2:AY65536").Font.Bold = False
    ActiveSheet.Range("A2:AY65536").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .MergeCells = False
    End With
    For i = 1 To 51
        If Cells(1, i) = "" Then
            Cells(1, i).EntireColumn.Hidden = True
        End If
    Next
    Range("P2:Q65536").Select
    Selection.NumberFormat = "#,##0.00"
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
    j = 2
    Do While Range("A" & j) <> ""
        Range("P" & j) = Range("P" & j) * 1
        Range("Q" & j) = Range("Q" & j) * 1
        j = j + 1
    Loop
   
    '------------------
    Columns("E:E").Select
    Selection.Insert Shift:=xlToRight
    Columns("AL:AL").Select
    Selection.Cut Destination:=Columns("E:E")
    Columns("G:G").Select
    Selection.Insert Shift:=xlToRight
    Columns("R:R").Select
    Selection.Cut Destination:=Columns("G:G")
    Columns("H:H").Select
    Selection.Insert Shift:=xlToRight
    Columns("T:T").Select
    Selection.Cut Destination:=Columns("H:H")
    Columns("S:T").Delete
    '------------------
   
    Columns("A:AK").Select
    Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("C2") _
        , Order2:=xlAscending, Key3:=Range("A2"), Order3:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    ActiveSheet.Range("A1:AY65536").AutoFilter
    Columns("A:A").HorizontalAlignment = xlCenter
    Columns("C:C").HorizontalAlignment = xlCenter
    Columns("E:E").HorizontalAlignment = xlCenter
    Columns("I:I").HorizontalAlignment = xlCenter
    Columns("A:A").AutoFit
    Columns("C:C").AutoFit
    Columns("E:E").AutoFit
    Columns("F:F").AutoFit
    Columns("G:G").AutoFit
    Columns("H:H").AutoFit
    Columns("I:I").AutoFit
    Columns("N:N").AutoFit
    Application.ScreenUpdating = True
    Rows("2:2").Select
    ActiveWindow.FreezePanes = True
       
End Sub
/Ivan
Avatar billede bak Forsker
22. maj 2002 - 15:32 #7
Skal du bare have flyttet overskriften eller bliver kolonnen slet ikke importeret nu ?
Avatar billede florint Nybegynder
22. maj 2002 - 15:52 #8
>>bak - som det er nu, er det den forkerte kolonne der bliver importeret  !

Den kolonne der skal med befinder sig 2 "kolonner" længere til højre for den "kolonne" der bliver importeret på nuværende tidspunkt fra den kommaseparerede fil.
/Ivan
Avatar billede bak Forsker
22. maj 2002 - 17:55 #9
Jeg tror faktisk at der er en meget enkel måde at fikse det på.
Det ser ud til at hele tesktfilen bliver importeret og at de kolonner der ikke har/får en overskrift bliver skjult.
Prøv lige at ændre det sted hvor der står Range("F1") = "Antal"  til
Range("H1") = "Antal"
Avatar billede florint Nybegynder
22. maj 2002 - 18:29 #10
Hej bak,
Nej desværre, den læser fra samme kolonne igen. Men ok, jeg skal være den første til at indrømme at jeg aldrig har prøvet dette før, så måske er det u........
Tror du ikke at det også skal rettes lidt længere nede ?
Columns("E:E").Select
    Selection.Insert Shift:=xlToRight
    Columns("AL:AL").Select
    Selection.Cut Destination:=Columns("E:E")
    Columns("G:G").Select
    Selection.Insert Shift:=xlToRight
    Columns("R:R").Select
    Selection.Cut Destination:=Columns("G:G")
    Columns("H:H").Select<<<<<<<<<<<
    Selection.Insert Shift:=xlToRight
    Columns("T:T").Select
    Selection.Cut Destination:=Columns("H:H")
    Columns("S:T").Delete

Ser det ikke ud som om den vælges fra der ?
/Ivan
Avatar billede bak Forsker
22. maj 2002 - 21:07 #11
Du kan prøve at markere hele arket og vælge "Formater > Kolonner > Vis.
Se så efter om kolonnen antal er kommet med ind i arket.
Hvis den er det, kan vi godt fikse det.
Du er også velkommen til at sende arket + teskt-filen til mig på
tommybak@netscape.net.
Avatar billede florint Nybegynder
22. maj 2002 - 21:30 #12
ER SENDT
/IVAN
Avatar billede florint Nybegynder
23. maj 2002 - 06:55 #13
Tak for hjælpen.
/Ivan
Avatar billede Chewie Novice
23. maj 2002 - 08:57 #14
Hvad var løsningen ???
Avatar billede bak Forsker
23. maj 2002 - 09:00 #15
Her er den :-)

Sub Import()
' Makro1 Makro
' Makro indspillet 15-04-2002 af xo
    'Sheets("Ark1").Select
    Application.ScreenUpdating = False
    Cells.Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Selection.ClearContents
    ActiveWindow.FreezePanes = False
    If ActiveSheet.Range("A1") <> "" Then
        Columns("A:AY").Delete
        Selection.QueryTable.Delete
        Selection.AutoFilter
    End If
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Danpots\PUDB10.TXT", Destination:=Range("A1"))
        .Name = "PUDB10"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlMSDOS
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .Refresh BackgroundQuery:=False
    End With
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("A1") = "Lev."
    Range("C1") = "Uge"
    Range("E1") = "Navn"
    Range("H1") = "Antal"
    Range("K1") = "Bemærkning"
    Range("P1") = "Pris"
    Range("Q1") = "Rab."
    Range("AK1") = "Potstr."
    ActiveSheet.Rows("1:1").Font.Bold = True
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .MergeCells = False
    End With
    'ActiveSheet.Range("A2:AY65536").Font.Bold = False
    ActiveSheet.Range("A2:AY65536").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .MergeCells = False
    End With
    For i = 1 To 52        '**********ændret fra 51-> 52  Bak
        If Cells(1, i) = "" Then
            Cells(1, i).EntireColumn.Hidden = True
        End If
    Next
    Range("P2:Q65536").Select
    Selection.NumberFormat = "#,##0.00"
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
    j = 2
    Do While Range("A" & j) <> ""
        Range("P" & j) = Range("P" & j) * 1
        Range("Q" & j) = Range("Q" & j) * 1
        j = j + 1
    Loop
   
    '*********--Indsat nyt.  Bak---------**********
   
    Columns("E:E").Insert Shift:=xlToRight
    Columns("AL:AL").Cut Destination:=Columns("E:E")
   
    Columns("I:I").Insert Shift:=xlToRight
    Columns("R:R").Cut Destination:=Columns("I:I")
   
    Columns("J:J").Insert Shift:=xlToRight
    Columns("T:T").Cut Destination:=Columns("J:J")
  '*************************************************
  '--------------------------
   
  ' Columns("E:E").Select
  ' Selection.Insert Shift:=xlToRight
  ' Columns("AL:AL").Select
  ' Selection.Cut Destination:=Columns("E:E")
  ' Columns("G:G").Select
  ' Selection.Insert Shift:=xlToRight
  ' Columns("R:R").Select
  ' Selection.Cut Destination:=Columns("G:G")
  ' Columns("H:H").Select
  ' Selection.Insert Shift:=xlToRight
  ' Columns("T:T").Select
  ' Selection.Cut Destination:=Columns("H:H")
  ' Columns("S:T").Delete
    '------------------
   
    Columns("A:AK").Select
    Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("C2") _
        , Order2:=xlAscending, Key3:=Range("A2"), Order3:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    ActiveSheet.Range("A1:AY65536").AutoFilter
   
    '*************Indsat Nyt  Bak***************************
    Range("A:A,C:C,E:E,K:K").HorizontalAlignment = xlCenter
    '*******************************************************
    'Columns("A:A").HorizontalAlignment = xlCenter
    'Columns("C:C").HorizontalAlignment = xlCenter
    'Columns("E:E").HorizontalAlignment = xlCenter
    'Columns("I:I").HorizontalAlignment = xlCenter
    Columns("A:A").AutoFit
    Columns("C:C").AutoFit
    Columns("E:E").AutoFit
    Columns("F:F").AutoFit
    '********Ændret  Bak ***********************************
    Columns("G:G").AutoFit
    Columns("H:H").AutoFit
    Columns("K:K").AutoFit
    Columns("N:N").AutoFit
    '********************************************************
    Application.ScreenUpdating = True
    Rows("2:2").Select
    ActiveWindow.FreezePanes = True
       
End Sub
Avatar billede bak Forsker
23. maj 2002 - 14:14 #16
Beklager, der har indsneget sig en lille fejl.
Sidste del af koden skal være
Columns("A:AK").Select
    Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Key2:=Range("C1") _
        , Order2:=xlAscending, Key3:=Range("A1"), Order3:=xlAscending, Header:= _
        xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    ActiveSheet.Range("A1:AY65536").AutoFilter
   
    '*************Indsat Nyt  Bak***************************
    Range("A:A,C:C,E:E,K:K").HorizontalAlignment = xlCenter
    '*******************************************************
    'Columns("A:A").HorizontalAlignment = xlCenter
    'Columns("C:C").HorizontalAlignment = xlCenter
    'Columns("E:E").HorizontalAlignment = xlCenter
    'Columns("I:I").HorizontalAlignment = xlCenter
    Columns("A:A").AutoFit
    Columns("C:C").AutoFit
    Columns("E:E").AutoFit
    Columns("F:F").AutoFit
    '********Ændret  Bak ***********************************
    'Columns("G:G").AutoFit
    'Columns("H:H").AutoFit
    Columns("K:K").AutoFit
    Columns("N:N").AutoFit
    '********************************************************
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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