Print side | Luk vindue

Aftaleseddel nummer

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=3165
Udskrevet den: 30.Apr.2024 kl. 09:52


Emne: Aftaleseddel nummer
Besked fra: Matlock
Emne: Aftaleseddel nummer
Posteringsdato: 20.Sep.2017 kl. 15:26
Hej Alle
så har jeg et spørsmål igen.

Bruger denne kode for at overføre mit userform data til et worksheet.

Når jeg gemmer ligger den på næste tomme linje som den skal.
Nu er det bare sådan at hvis jeg vil gemme en aftaleseddel med et nummer der allerede eksistere gemmer den også på en ny linje, hvordan får jeg den til at gemmen den redigeret aftaleseddel på den gamle linje?? altså Aftaleseddel nr.1 bliver gemt under nummer 1
    
Worksheets("Bilag B").Activate
    Range("D4").Select
    If Range("D4").Value = "" Then
        Range("D4").Activate
    Else
        Range("D4").CurrentRegion.Select
        ActiveCell.Offset(Selection.Rows.Count, 0).Activate
    End If
    With ActiveCell
        .Value = txtAftale.Text
        .Offset(0, 1).Value = txtbesk.Text
        .Offset(0, 2).Value = Range("Aftaleseddel!Ialt")
        .Offset(0, 6).Value = txtDato.Text
        .Offset(0, 7).Value = txtVare1.Text
        .Offset(0, 8).Value = txtPris1.Text
        .Offset(0, 9).Value = txtVare2.Text
        .Offset(0, 10).Value = txtPris2.Text
        .Offset(0, 11).Value = txtVare3.Text
        .Offset(0, 12).Value = txtPris3.Text
        .Offset(0, 13).Value = txtVare4.Text
        .Offset(0, 14).Value = txtPris4.Text
        .Offset(0, 15).Value = txtVare5.Text
        .Offset(0, 16).Value = txtPris5.Text
        .Offset(0, 17).Value = txtVare6.Text
        .Offset(0, 18).Value = txtPris6.Text
    End With



Svar:
Besked fra: EXCELGAARD
Posteringsdato: 21.Sep.2017 kl. 09:23
Jeg ville lave det lidt anerledes...
 
Nu har jeg ikke dit regneark, så det bli'r lidt "ud af hovedet", hvor jeg antager, at aftalenummeret i dit UserForm ligger i 'txtAftale', og aftale nummeret i dit regneark står i kolonne D, og dine aftaler begynder fra og med række 4..
On Error Resume Next
Worksheets("Bilag B").Select
Dim Række As Long
Række = WorksheetFunction.Match(txtAftale.Text, Range("D:D"), 0)
If Række < 4 Then Række = Range("D" & Rows.Count).End(xlUp).Row + 1
If Række < 4 Then Række = 4
Range("D" & Række).Select
...og, herefter kan du bare indsætte dine værdier, som du gør efter
With ActiveCell ...
Bemærk, at, hvorvidt kode linjen...
WorksheetFunction.Match(txtAftale.Text, Range("D:D"), 0)
...rent faktisk finder dit aftalenummer kommer måske lidt an på, hvordan aftalenummeret bliver gemt i regnearket, da jeg kan se, at du benytter '.Text' i stedet for '.Value'.
Du kan evt. blive nødt til, at konvertere frem og tilbage mellem tekst og tal, hvis du har behov for at tingene er i tekst format.
 


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: Matlock
Posteringsdato: 21.Sep.2017 kl. 11:50
Hej
Kan ikke få det til at virke. den gemmer udenfor side 1 på arket og erstatter ikke det gamle nummer.

Og når jeg hente aftaleseddel nummer over 4 er der fejl.

Her er filen, har slettet alle tal.

uploads/527/Byggesagsøkonomi_Test6.xlsm" rel="nofollow - uploads/527/Byggesagsøkonomi_Test6.xlsm


Besked fra: Matlock
Posteringsdato: 03.Okt.2017 kl. 10:30
Har løst problemet. Valgt at bruge “Case” og så taste hvilket cell der høre til hvert aftaleseddel nummer. Lidt meget kode da der kan være 100 aftale nummer, men virker.


Besked fra: Matlock
Posteringsdato: 03.Okt.2017 kl. 13:16
Fandt en ny løsning som var meget mere simpel, hvis nogen er interesseret.

 
    Worksheets("Bilag B").Activate
    Range("D3").Activate
    ActiveCell.Offset(txtAftale.Value, 0).Activate
        
        If ActiveCell.Value = "" Then
        ActiveCell.Offset(1).EntireRow.Insert
        End If
    
    With ActiveCell
        .Value = txtAftale.Text
        .Offset(0, 1).Value = txtbesk.Text
        .Offset(0, 2).Value = Range("Aftaleseddel!Ialt")
        .Offset(0, 7).Value = txtDato.Text
        .Offset(0, 8).Value = txtYdelse1.Text
        .Offset(0, 9).Value = txtPris1.Text
        .Offset(0, 10).Value = txtYdelse2.Text
        .Offset(0, 11).Value = txtPris2.Text
        .Offset(0, 12).Value = txtYdelse3.Text
        .Offset(0, 13).Value = txtPris3.Text
        .Offset(0, 14).Value = txtYdelse4.Text
        .Offset(0, 15).Value = txtPris4.Text
        .Offset(0, 16).Value = txtYdelse5.Text
        .Offset(0, 17).Value = txtPris5.Text
        .Offset(0, 18).Value = txtVare1.Text
        .Offset(0, 19).Value = txtLøn1.Text
    End With

Nu er det aftaleseddels nr. der afgøre hvor meget resultatet skal offset.



Print side | Luk vindue