Avatar billede alen32 Nybegynder
07. november 2007 - 19:11 Der er 4 kommentarer og
1 løsning

Ændre en konstant

Hej!
Hvordan ændrer jeg kode så makro tage værdi fra ark1 og celle a2 istedet for at være konstant?
Kode:
Const sCellToWriteIn As String = "Az3"
Avatar billede jlemming Nybegynder
07. november 2007 - 20:21 #1
Svaret på dit spm er:
slet din nuværende linie
indsæt denne i kode: sCellToWriteIn = Sheets("ark2").Range("A2")

Meeeen dit konstant navn tyder på at den ikke helt bliver brugt som du antyder??
Avatar billede alen32 Nybegynder
07. november 2007 - 20:41 #2
Jeg tror du har ret! Fordi jeg får fjelmeddelse
her kan du se kode:
Sub data()

' Makro indspillet 20-03-2006 af Alen

    Range("C1").Select
    Range("C1").Cut Destination:=Range("C3")
    Rows("1:2").Select
    Selection.Delete Shift:=xlUp
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:="=0620", _
        Operator:=xlOr, Criteria2:="=0621"
    Columns("B:C").Select
    Selection.Copy
    Sheets.Add
    ActiveSheet.Paste
    Const sSalesSheetName As String = "Ark1"
Const sCellToWriteIn As String = "az33"

Dim salesFile(1 To 3)
salesFile(1) = "A:\150.xls"
salesFile(2) = "A:\180.xls"
salesFile(3) = "A:\200.xls"


Dim iSalesNo As Integer
Dim wkbNew As Excel.Workbook
Dim wkbSales As Excel.Workbook
Dim wksImport As Excel.Worksheet
Dim wksView As Excel.Worksheet
Dim lRowFrom As Long
Dim lRowTo As Long
Dim bFound As Boolean
Dim colFound As New Collection

'On Error GoTo CleanUp
Set wkbNew = ActiveWorkbook
Set wksImport = wkbNew.ActiveSheet

For iSalesNo = LBound(salesFile) To UBound(salesFile)
Set wkbSales = Application.Workbooks.Open(Filename:=salesFile(iSalesNo))
Set wksView = wkbSales.Worksheets(sSalesSheetName)

' 2-tallet her bestemmer hvilken
' række det første kundenr findes i( Update-filen)
For lRowFrom = 2 To wksImport.UsedRange.Rows.Count
bFound = False
' 3-tallet her bestemmer hvilken række
' det første kundenrfindes i(Salgsview - filen)
For lRowTo = 3 To wksView.UsedRange.Rows.Count
If Val(wksImport.Cells(lRowFrom, 1).Value) = _
wksView.Cells(lRowTo, 2).Value Then
wksView.Cells( _
lRowTo, _
wksView.Range(sCellToWriteIn).Column _
).Value = _
wksImport.Cells(lRowFrom, 2).Value
bFound = True
Exit For
End If
Next lRowTo
  If bFound Then
                On Error Resume Next
                'colFound.Add wksImport.Cells(lRowFrom, 1).Address, CStr(wksImport.Cells(lRowFrom, 1).Address)
                colFound.Add wksImport.Cells(lRowFrom, 1).Row, CStr(wksImport.Cells(lRowFrom, 1).Row)
                On Error GoTo 0
            End If

Next lRowFrom
wkbSales.Close savechanges:=True
Next iSalesNo
'Color all cells in A red
    wksImport.Range("A2:A" & CStr(wksImport.UsedRange.Rows.Count)).Interior.ColorIndex = 0
    'Remove the red colort from found cells.
    For lRowFrom = 1 To colFound.Count
        wksImport.Cells(colFound(lRowFrom), 1).Interior.ColorIndex = 1
    Next lRowFrom

CleanUp:
Set wksImport = Nothing
Set wksView = Nothing
Set wkbNew = Nothing
Set wkbSales = Nothing
End Sub
Avatar billede jkrons Professor
07. november 2007 - 21:25 #3
Prøv at ændre din konstant til at være en variabel. Konstanter er jo karakteriseret ved at blive tildelt en værdi en gang for alle. Den går ikke, hvis værdien skal hentes fra en celle i regnearket, der pr. defintion er variabel.
Avatar billede alen32 Nybegynder
07. november 2007 - 21:44 #4
ok, jeg glemte lige deklarere variabel
Dim CellToWriteIn as String
sCellToWriteIn = Sheets("ark2").Range("A2")

Tak jkrons og jlemming!
Avatar billede jlemming Nybegynder
08. november 2007 - 08:20 #5
Velbekomme
Ja, som jeg skrev skulle slette din nuværende linie :-)
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