Avatar billede maagefinke Nybegynder
18. januar 2004 - 18:10 Der er 16 kommentarer og
2 løsninger

excel VBA Skal aflevere data på flere forskellige regneark

If ListBox1.Text = "Autodrift" Then
        Range("a3").Select
        If Range("a3").Value = "" Then
    Range("a3").Select
    Else
    lastrow = Cells(Rows.Count, "a").End(xlUp).Row
    Range("a" & lastrow + 1).Select
    End If
            With ActiveCell
     
        .Value = TextBox1.Text
        .Offset(0, 1).Value = TextBox2.Text
        .Offset(0, 2).Value = TextBox4.Text
        .Offset(0, 3).Value = TextBox3.Text
        .Offset(0, 6).Value = TextBox3.Text
End With
  End If
Avatar billede maagefinke Nybegynder
18. januar 2004 - 18:12 #1
Hov, ovenstående kode afleverer data til "Ark1". Jeg vil gerne have at disse data også afleveres på arket "Autodrift". Hvordan skal koden så se ud?
Avatar billede kabbak Professor
18. januar 2004 - 18:18 #2
If ListBox1.Text = "Autodrift" Then
Worksheets(ListBox1.Text).select ' NY Linie
        Range("a3").Select
        If Range("a3").Value = "" Then
    Range("a3").Select
    Else
    lastrow = Cells(Rows.Count, "a").End(xlUp).Row
    Range("a" & lastrow + 1).Select
    End If
            With ActiveCell
     
        .Value = TextBox1.Text
        .Offset(0, 1).Value = TextBox2.Text
        .Offset(0, 2).Value = TextBox4.Text
        .Offset(0, 3).Value = TextBox3.Text
        .Offset(0, 6).Value = TextBox3.Text
End With
  End If
Avatar billede kabbak Professor
18. januar 2004 - 18:22 #3
Worksheets(ListBox1.Text).select ' NY Linie

den virker kun før else hvis den også skal virke efter else så

Worksheets("Autodrift").select ' NY Linie
If ListBox1.Text = "Autodrift" Then
        Range("a3").Select
        If Range("a3").Value = "" Then
    Range("a3").Select
    Else
    lastrow = Cells(Rows.Count, "a").End(xlUp).Row
    Range("a" & lastrow + 1).Select
    End If
            With ActiveCell
     
        .Value = TextBox1.Text
        .Offset(0, 1).Value = TextBox2.Text
        .Offset(0, 2).Value = TextBox4.Text
        .Offset(0, 3).Value = TextBox3.Text
        .Offset(0, 6).Value = TextBox3.Text
End With
  End If
Avatar billede maagefinke Nybegynder
18. januar 2004 - 18:46 #4
Ja, jeg kludrer i det. Lad mig prøve at gøre det omvendt så: Foruden at aflevere data til arket "autodrift" skal der også afleveres data til fx "ark33"
Jeg ønsker med andre ord først at aflevere data til "ark1" og herefter til "ark2". Er det mere klart nu?
Avatar billede kabbak Professor
18. januar 2004 - 18:52 #5
er det her du bestemmer hvilket ark det er til

If ListBox1.Text = "Autodrift" Then
Avatar billede maagefinke Nybegynder
18. januar 2004 - 19:06 #6
Ja!
Avatar billede maagefinke Nybegynder
18. januar 2004 - 19:07 #7
Og det virker med at aflevere til det ene ark. Men jeg vil gerne have afleveret til 2 ark i samme "moment".
Avatar billede kabbak Professor
18. januar 2004 - 19:20 #8
så er det nok noget i denne retning

de andre ark er kaldt via call

Sub Gem()
If ListBox1.Text = "Autodrift" Then
    Worksheets(Autodrift).Activate
        Range("a3").Select
        If Range("a3").Value = "" Then
    Range("a3").Select
    With ActiveCell
        .Value = TextBox1.Text
        .Offset(0, 1).Value = TextBox2.Text
        .Offset(0, 2).Value = TextBox4.Text
        .Offset(0, 3).Value = TextBox3.Text
        .Offset(0, 6).Value = TextBox3.Text
      End With
    End If
  End If
  Call FlereArk("Ark1")
  Call FlereArk("Ark2")
End Sub

Public Sub FlereArk(Navn As String)
Worksheets(Navn).Activate
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
    Range("a" & lastrow + 1).Select
    With ActiveCell
     
        .Value = TextBox1.Text
        .Offset(0, 1).Value = TextBox2.Text
        .Offset(0, 2).Value = TextBox4.Text
        .Offset(0, 3).Value = TextBox3.Text
        .Offset(0, 6).Value = TextBox3.Text
End With
   
End Sub
Avatar billede kabbak Professor
18. januar 2004 - 19:28 #9
Dette modsiger hinanden, range("A3") vil altid blive valgt

If ListBox1.Text = "Autodrift" Then
      Range("a3").Select
        If Range("a3").Value = "" Then
        Range("a3").Select
Avatar billede maagefinke Nybegynder
18. januar 2004 - 19:41 #10
Ja, men der er jo også en else-sætning i mit oplæg.
Avatar billede maagefinke Nybegynder
18. januar 2004 - 19:45 #11
Jeg har selv løst det således, hvor der bliver overført til 3 ark samtidig,nemlig henholdsvis 1) autodrift,2)en opsamlingskonto"auto" og en opsamlingskonto "bank",  men jeg er altså ikke tilfreds med løsningen, som jeg finder er noget tung. Det virker, men der må findes en mere elegant løsning!?
Avatar billede maagefinke Nybegynder
18. januar 2004 - 19:45 #12
Her er så koden:
           
  If ListBox1.Text = "Autodrift" Then
        Range("a3").Select
        If Range("a3").Value = "" Then
    Range("a3").Select
    Else
    lastrow = Cells(Rows.Count, "a").End(xlUp).Row
    Range("a" & lastrow + 1).Select
    End If
            With ActiveCell
     
        .Value = TextBox1.Text
        .Offset(0, 1).Value = TextBox2.Text
        .Offset(0, 2).Value = TextBox4.Text
        .Offset(0, 3).Value = TextBox3.Text
        .Offset(0, 6).Value = TextBox3.Text
End With
  End If
 
  If ListBox1.Text = "Autodrift" Then
Sheets("Auto").Select
Range("a3").Select
        If Range("a3").Value = "" Then
    Range("a3").Select
    Else
    lastrow = Cells(Rows.Count, "a").End(xlUp).Row
    Range("a" & lastrow + 1).Select
    End If
       
With ActiveCell
        .Value = TextBox1.Text
        .Offset(0, 1).Value = TextBox2.Text
        .Offset(0, 2).Value = TextBox4.Text
        .Offset(0, 3).Value = TextBox3.Text
End With
End If

 
  If ListBox1.Text = "Autodrift" Then
Sheets("Bank").Select
Range("a3").Select
        If Range("a3").Value = "" Then
    Range("a3").Select
    Else
    lastrow = Cells(Rows.Count, "a").End(xlUp).Row
    Range("a" & lastrow + 1).Select
    End If
       
With ActiveCell
        .Value = TextBox1.Text
        .Offset(0, 1).Value = TextBox2.Text
        .Offset(0, 2).Value = TextBox4.Text
        .Offset(0, 4).Value = TextBox3.Text
End With
End If
Avatar billede kabbak Professor
18. januar 2004 - 19:46 #13
sidste bud

Sub Gem()
If ListBox1.Text = "Autodrift" Then
    Worksheets("Autodrift").Activate
    If Range("a3").Value = "" Then
      Range("a3").Select
    Else
    lastrow = Cells(Rows.Count, "a").End(xlUp).Row
    Range("a" & lastrow + 1).Select
    End If

  With ActiveCell
        .Value = TextBox1.Text
        .Offset(0, 1).Value = TextBox2.Text
        .Offset(0, 2).Value = TextBox4.Text
        .Offset(0, 3).Value = TextBox3.Text ' hvorfor TextBox3 2 gange
        .Offset(0, 6).Value = TextBox3.Text
  End With
    Call FlereArk("Ark1") ' Arket kaldes hvis ListBox1.Text = "Autodrift"
  End If
    Call FlereArk("Ark2") ' Arket kaldes altid
End Sub

Public Sub FlereArk(Navn As String)
    Worksheets(Navn).Activate
    If Range("a3").Value = "" Then
      Range("a3").Select
    Else
    lastrow = Cells(Rows.Count, "a").End(xlUp).Row
    Range("a" & lastrow + 1).Select
    End If
  With ActiveCell
        .Value = TextBox1.Text
        .Offset(0, 1).Value = TextBox2.Text
        .Offset(0, 2).Value = TextBox4.Text
        .Offset(0, 3).Value = TextBox3.Text ' hvorfor TextBox3 2 gange
        .Offset(0, 6).Value = TextBox3.Text
  End With
End Sub
Avatar billede kabbak Professor
18. januar 2004 - 19:52 #14
ok, jeg kan se at du ikke bruger de samme celler i de forskellige ark, så din den sidste er måden.
Avatar billede maagefinke Nybegynder
18. januar 2004 - 20:14 #15
Det virker i hvert fald.
Men kabbak, lav lige et svar så du kan få noget for din ulejlighed, please!
Avatar billede kabbak Professor
18. januar 2004 - 20:39 #16
et svar, men nu ikke for mange point, ;-))
Avatar billede maagefinke Nybegynder
18. januar 2004 - 22:08 #17
Ikke fordi jeg er nærig, men der skal jo ikke gå inflation i det. Nogle af jer bruger jo siden som reference.
Tak for hjælpen, kabbak!
Avatar billede kabbak Professor
18. januar 2004 - 22:14 #18
selv tak
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