Avatar billede itst Nybegynder
06. juli 2003 - 18:16 Der er 15 kommentarer

vba brug af variable

jf. programstumpen nedenfor har jeg erklæret en variabel Antal. Bagefter beregner jeg en formel i celle "A3" og endelig forsøger jeg at trække denne formel fra celle "A3" og så langt ned som variablen Antal angiver. Er der nogen der ved hvordan syntaksen er for det sidste, jf sidste linie hvor der er indsat et ?-tegn

Set MyRange = Range("a1").CurrentRegion
    Antal = MyRange.Rows.Count - 2
   
    Range("a3").Select
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC5,Kommuneliste!R2C1:R276C2,2,TRUE)"
   
    Selection.AutoFill Destination:=Range("A3:?")
Avatar billede kabbak Professor
06. juli 2003 - 20:34 #1
Selection.AutoFill Destination:=Range(Cells(3, 1), Cells(Antal, 1))
Avatar billede kabbak Professor
06. juli 2003 - 20:36 #2
Selection.AutoFill Destination:=Range("A3:A" & Antal)

den første var en smutter, hvad mad denne
Avatar billede kabbak Professor
06. juli 2003 - 20:38 #3
mad = med
Avatar billede itst Nybegynder
07. juli 2003 - 09:00 #4
Det fungerer desværre heller ikke, programmet stopper når det kommer til denne linie, men det må da kunne lade sig gøre at anvende en variabel til dette formål
Avatar billede kabbak Professor
07. juli 2003 - 09:35 #5
Set MyRange = Range("a1").CurrentRegion
    Antal = MyRange.Rows.Count - 2

det giver jo værdien -1, det kan jo den ikke regne med
Avatar billede itst Nybegynder
07. juli 2003 - 09:41 #6
nej, range(a1").currentregion markere hele det områder der ikke er blankt og som hænger sammen med a1

prøv selv inde i excel at udfylde nogle celler der grænser op til hinanden og tryk derefter ctrl+shift+*

Så den programstump giver mig antallet af rækker - 2 og er god nok
Avatar billede kabbak Professor
07. juli 2003 - 10:06 #7
denne virker hos mig

Public Sub test()
Set MyRange = Range("a1").CurrentRegion
    antal = MyRange.Rows.Count - 2
   
    Range("a3").Select
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC5,Kommuneliste!R2C1:R276C2,2,TRUE)"
    MsgBox antal
    Selection.AutoFill Destination:=Range("A3:A" & antal)
End Sub
Avatar billede itst Nybegynder
07. juli 2003 - 10:36 #8
Den trækker ikke formlen nedad, jeg får en fejlmeddelelse "Metoden autofill for range klassen mislykkedes"
Avatar billede kabbak Professor
07. juli 2003 - 12:01 #9
hvilken excel bruger du, jeg har 2000.

jeg har stadig ikke problemer.

vis lige din kode
Avatar billede martin_moth Mester
07. juli 2003 - 12:20 #10
I mangler en parantes:

Selection.AutoFill Destination:=Range("A3:A" & antal & ")"
Avatar billede martin_moth Mester
07. juli 2003 - 12:20 #11
Vrøvl!!! Sorry jeg blandede mig (rødme rødme)
Avatar billede itst Nybegynder
07. juli 2003 - 12:39 #12
Hele koden følger herunder. Den relevante del er næsten nederst. Jeg har excel 97, men jeg vil prøve koden på excel xp i aften


Sub HentData2()

   
    Application.ScreenUpdating = False

Dim sDataPath As String
Dim sFilNameNy As String
Dim sDataOpsamlingsPath As String

Dim MyRange As Range

Dim fso As Object
Dim dir As Object
Dim fil As Object

Dim Filname
Dim test

 
    'Dir med data-filer der skal overføres til regneark
    sDataPath = ActiveWorkbook.Path & "\Indberetninger ubehandlede\"
   
    'Dir til data-filer hvis data er opsamlede i regnearket
    sDataOpsamlingsPath = ActiveWorkbook.Path & "\Indberetninger behandlet\"
   
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set dir = fso.GetFolder(sDataPath)
    Set fil = dir.files
   
    For Each Filname In fil
        ' Åben data-fil for læsning
        Workbooks.Open FileName:=sDataPath & Filname.Name
   
    Range("C3,c5,C7,C9,C11,C13,C16,c17,c18,C19,C21,C23,C25,C27,C30,c31,c32,C33,C34,C35,C36,C37,C38,c39,C41,C43,c45,c47,c49,c51").Select
        'C5,C7,C9,C11,C13,C16,C16,c17,c18,C19,C21,C23,C25,C27,C30,c31,c32,C33,C34,C35,C36,C37,C38,c39,C41,C43,c45,c47,c49,c51").Select
    Range("C3").Activate
    Selection.Copy
   
    Windows("Data til bolignetundersøgelse.xls").Activate
    Range("b1").Select
    'Selection.CurrentRegion.Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
   
    Selection.PasteSpecial Transpose:=True
    Application.CutCopyMode = False
    ActiveWorkbook.Save

    'Luk data-fil
        Windows(Filname.Name).Activate
        Range("C3").Select
        ActiveWindow.Close
       
        'flyt filen efter aflæsning fra "sDataPath" til "sDataOpsamlingsPath"
        fso.MoveFile sDataPath & Filname.Name, sDataOpsamlingsPath & Filname.Name
       
    Next
   
    ' Afslut objecter
    Set fil = Nothing
    Set dir = Nothing
    Set fso = Nothing

    Selection.CurrentRegion.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
   
    Set MyRange = Range("a1").CurrentRegion
    antal = MyRange.Rows.Count - 2
   
    Range("a3").Select
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC5,Kommuneliste!R2C1:R276C2,2,TRUE)"
 
    Selection.AutoFill Destination:=Range("A3:A" & antal)
 
    Range("A1").Select
    Selection.End(xlDown).Select
   
    End Sub
Avatar billede agatheb Nybegynder
08. juli 2003 - 11:46 #13
Måske at du kan bruge denne kode: (Måske skal du indsætte nogle '$' tegn)
Sub test()

Dim The_formula As String, MyRange As Range, Antal As Long


The_formula = "=VLOOKUP(RC5,Kommuneliste!R2C1:R276C2,2,TRUE"


Set MyRange = Range("a1").CurrentRegion
Antal = MyRange.Rows.Count - 2

With ActiveSheet
    .Range(.Cells(2, 2), .Cells(Antal, 2)).Formula = The_formula
End With

End Sub
Avatar billede kabbak Professor
01. februar 2004 - 00:43 #14
Lukketid.
Avatar billede kabbak Professor
12. marts 2007 - 23:06 #15
luk
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