Avatar billede IrisLF Juniormester
23. juli 2014 - 17:15 Der er 1 løsning

VBA kode holdt op med at virke korrekt - HJÆLP :'(

Hej,

Jeg har lavet en Excel template - når jeg opretter et dokument ud fra den og gemmer det; kalder det et andet dokument, opdaterer og gemmer nogle data i det samt lukker det igen. 

Det forgår med en userform der giver mulighed for at vælge det rækkenummer den skal opdatere i det andet dokument.

Det er lavet sådan at ved 0 og 1 skal den finde første ledige række. Hvis man vælger et andet nummer, skal det svare til den pågældende række og opdatere den.

Alt virkede perfekt - indtil for et par timers tid siden. Nu insisterer den på at vælge første ledige række uanset hvilket nummer jeg vælger. Jeg forstår ikke hvorfor og hvordan jeg fikser det: 

Option Explicit

Rem Version 3
Rem =========
Const sti = "C:\Users\Iris\Dropbox\Sponsor\Sponsor mappe"      '<--- SKAL TILPASSES når skabelonen og sponsorliste flyttes til ny destination
Const xlsSPfilNavn = "Sponsorliste.xlsm"                        '<--- Her kan efternavn på sponsorlisten rettes fra xlsx --> xlsm
Dim xlsKontrakt As Workbook
Dim tabel(11)
Dim xlsSP As Workbook
Dim antalRæk As Integer, ræk As Integer, x As Integer, vNr As Integer, tomRæk As Integer

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim wbk As Workbook
    Dim ix As Long

    If InStr(LCase(ActiveWorkbook.Name), ".xltm") > 0 Then
        Exit Sub
    End If
   
    Set xlsKontrakt = ActiveWorkbook
    Set xlsSP = Workbooks.Open(sti & "\" & xlsSPfilNavn)
    xlsSP.Sheets(1).Activate
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
   
Rem Søg efter tom række
    tomRæk = findTomRække
   
    valg = "Tast nr" & vbCr & "0 Ny sponsor"
   
    For ix = 2 To antalRæk
        valg = valg & vbCr & ix & " " & Range("B" & ix) & " " & Range("C" & ix)
    Next ix
   
    'svar = InputBox(valg, "Nyoprettelse eller opdatering")
    ' *** NEW ***
    frmInput.Show
   
    If svar = "" Then                              'cancel
        Exit Sub
    Else
        If IsNumeric(svar) = True Then
            vNr = svar
        Else
            Exit Sub                                'ej numerisk
        End If
    End If
   
    If vNr = 0 Or 1 Then
        If tomRæk > 0 Or 1 Then
            ræk = tomRæk
        Else
            ræk = antalRæk + 1
        End If
    Else
        ræk = vNr
    End If
   
    xlsKontrakt.Activate
    Rem Tabellen udfyldes i den orden, som sponsorlisten foreskriver
    tabel(0) = Range("C105") + Range("C111")        'beløb  *)
    tabel(1) = Range("C30")                        'navn
    tabel(2) = Range("C31")                        'adresse
    tabel(3) = Range("C35")                        'CVR/SE
    tabel(4) = Range("C32")                        'kontakt
    tabel(5) = Range("C33")                        'tlf
    tabel(6) = Range("C34")                        'email
    tabel(7) = Range("D41")                        'fra dato
    tabel(8) = Range("D42")                        'til dato
    tabel(9) = Range("D46")                        'genforh.dato
    tabel(10) = ""                                  'logo-sti
   
    xlsSP.Activate
   
    With ActiveWorkbook
        For x = 0 To 10
            Range("A" & ræk).Offset(0, x) = tabel(x)
        Next x
    End With
   
Rem Luk sponsorliste
    xlsSP.Save
    xlsSP.Close
   
    Set xlsSP = Nothing
End Sub

Private Function findTomRække()
    Dim ræk
    For ræk = 2 To antalRæk
        If Range("B" & ræk) = "" Then
            findTomRække = ræk
            Exit Function
        End If
    Next ræk

    findTomRække = 0
End Function


Kan nogen hjælpe mig?
Avatar billede IrisLF Juniormester
23. juli 2014 - 18:23 #1
If vNr = 0 Or vNr = 1 Then
        If tomRæk > vNr Then
            ræk = tomRæk
        Else
            ræk = antalRæk + 1
        End If
    Else
        ræk = vNr
    End If
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

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