Avatar billede cyaegha Nybegynder
19. august 2004 - 13:53 Der 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?
   
End Sub

Håber jeg har vist mit problem rigtigt!
Avatar billede knowit-mmp Nybegynder
19. august 2004 - 13:55 #1
PasteData "H20","Felt1"

Kald proceduren UDEN paranteser...

Dette bruges kun, hivs du kalder ern Function og ikke ved kald af Sub's
Avatar billede cyaegha Nybegynder
19. august 2004 - 14:42 #2
Det kører uden fejlmeddelelser. Men der sker ingenting, overhovedet på mine ark!
Kan du se hvad der er galt med min kode?????
Avatar billede cyaegha Nybegynder
19. august 2004 - 14:45 #3
Jeg har fjernet insertrow og lagt de to linier ind i insertalldata. Og undskyld den sene respons...
Avatar billede knowit-mmp Nybegynder
19. august 2004 - 14:51 #4
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...

/Martin
Avatar billede cyaegha Nybegynder
19. august 2004 - 14:57 #5
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.
Avatar billede cyaegha Nybegynder
19. august 2004 - 15:20 #6
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.
Avatar billede cyaegha Nybegynder
19. august 2004 - 15:23 #7
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"
   
End Sub
Avatar billede cyaegha Nybegynder
19. august 2004 - 15:25 #8
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
Avatar billede cyaegha Nybegynder
19. august 2004 - 15:46 #9
Hvor finder jeg nogle gode informationer omkring procedurer og variabler??
Avatar billede knowit-mmp Nybegynder
19. august 2004 - 18:50 #10
Giv mig lige en halv times tid, så sender jeg en stump kode til dig, der virker...
Avatar billede kabbak Professor
20. august 2004 - 00:07 #11
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
Avatar billede kabbak Professor
20. august 2004 - 00:16 #12
nej, det skal være sådan.

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
Avatar billede cyaegha Nybegynder
20. august 2004 - 14:16 #13
-kabbak: Tjah, hvis der er nogle problemer med pointene så sig til.

knowit kom med svaret på det jeg spurgte om, men kabbak med pæne kodestumper.
Tak for hjælpen.
Avatar billede kabbak Professor
20. august 2004 - 14:42 #14
nææ, ingen problemer, bare for at vise at man kan korte koden ned.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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