19. august 2004 - 13:53Der er
13 kommentarer og 1 løsning
sub procedurers syntaks - Problem med at kalde sub fra en anden
Hej Med jer
Så er jeg endt i noget snavs. Jeg tænkte at jeg lige kunne bikse en makro sammen til at sprede nogle data ud i et regneark. Men der er noget syntaksen for disse sub-procedurer jeg ikke helet er med på. Og Excel giver ikke særlig god feedback eller hjælp. Mit problem kan ses nederst i koden. 'kopierer data ud Sub PasteData(StartCelle, SlutArk) If Range(StartCelle).Value <> "" Then Range(StartCelle).Select ActiveCell.Range("A1:D1").Select Selection.Copy Sheets(SlutArk).Select Insert_Row (ny) Range("C3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Paste_NavnOgDato (SlutArk) Sheets("Front").Select Range(StartCelle).Select ActiveCell.Range("A1:D1").Select Application.CutCopyMode = False Selection.ClearContents End Sub
'indsætter navn og dato Sub Paste_NavnOgDato(Arknavn) Sheets("Front").Select Range("D2:D3").Select Application.CutCopyMode = False Selection.Copy Sheets(Arknavn).Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True End Sub
'indsætter en række til dataene Sub Insert_Row(ha) 'ha er med for ellers vil den også her have 'et lighedstegn Rows("3:3").Select Selection.Insert Shift:=xlDown End Sub
'skulle køre en liste med de celler og ark der 'skulle koopieres fra Sub InsertAllData(test) 'Så'n noget hø PasteData("H20", "Felt 1") 'Her vil den have et lighedstegn?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Så vidt jeg lige kan se, så er det her der er noget galt :
Sub PasteData(StartCelle, SlutArk) If Range(StartCelle).Value <> "" Then Range(StartCelle).Select <------------- Denne linje vælger din Startcelle ActiveCell.Range("A1:D1").Select <------- Men Denne linje vælger A1:D1 ??!
Det vil sige at det ALTID er celle a1:d1 der bliver kopieret og sat ind på dit slutark....
Hvis du kan forklare hvad det er du vil så kan jeg bedre hjælpe dig...
linjen med A1:D1 skulle have været relativ. Jeg mente at det skulle være R#C#, men efter at lave en makro med relativ reference slået til lavede den denne linie
ActiveCell.Offset(1, 0).Range("A1:D1").Select (er afprøvet uden resultat)
Men uanset hvad burde mine person og dato felter blive kopieret, det gør de heller ikke.
En forklaring: Jeg har en liste med data, som tastes ind på front. Disse data skal så fordeles ud på andre ark (SlutArk). StartCelle henviser til den første celle med data. Navn og dato er altid ens.
og jeg har ændret det til en stor pærevælling uden subsubs, men det virker stadig ikke. Sub PasteData(StartCelle, SlutArk) If Range(StartCelle).Value <> "" Then Range(StartCelle).Select ActiveCell.Offset(1, 0).Range("A1:D1").Select Selection.Copy Sheets(SlutArk).Select Rows("3:3").Select 'en ny række indsættes Selection.Insert Shift:=xlDown Range("C3").Select 'data sættes ind på den nye række Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Front").Select 'navn og dato sættes ind Range("D2:D3").Select Application.CutCopyMode = False Selection.Copy Sheets(SlutArk).Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True Sheets("Front").Select 'data slettes efter at de er flyttet Range(StartCelle).Select ActiveCell.Offset(1, 0).Range("A1:D1").Select Application.CutCopyMode = False Selection.ClearContents End If End Sub
Sub InsertAllData() 'Så'n noget hø PasteData "H20", "Felt 1"
Er det noget med at jeg skal angive typerne på de variable? Jeg gik ud fra at den kunne tage det som ren tekst. Men det kunne være at det var smartere at have en sheet og celle type
jeg ved ikke lige hvad du vil, men her er en redigeret kode.
Sub PasteData(StartCelle As String, SlutArk As String) If Range(StartCelle).Value <> "" Then Range(StartCelle).Offset(1, 0).Range("A1:D1").Copy Sheets(SlutArk).Select Rows("3:3").Insert Shift:=xlDown Range("C3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Front").Range("D2:D3").Copy Sheets(SlutArk).Select Range("A3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True Sheets("Front").Range(StartCelle).Offset(1, 0).Range("A1:D1").ClearContents End If End Sub
Sub InsertAllData() Call PasteData("H20", "Ark1") End Sub
Sub PasteData(StartCelle As String, SlutArk As String) If Range(StartCelle).Value <> "" Then Sheets(SlutArk).Rows("3:3").Insert Shift:=xlDown Range(StartCelle).Offset(1, 0).Range("A1:D1").Copy Sheets(SlutArk).Select Range("C3").PasteSpecial Paste:=xlPasteValues Sheets("Front").Range("D2:D3").Copy Sheets(SlutArk).Select Range("A3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True Sheets("Front").Range(StartCelle).Offset(1, 0).Range("A1:D1").ClearContents End If End Sub
Sub InsertAllData() Call PasteData("H20", "Ark1") End Sub
nææ, ingen problemer, bare for at vise at man kan korte koden ned.
Synes godt om
Ny brugerNybegynder
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.