Avatar billede maagefinke Nybegynder
22. januar 2004 - 22:27 Der er 11 kommentarer og
1 løsning

Fejl i kode -

Når jeg åbner programmet og trykker på buttom udfører programmet handlingerne 1-3  korrekt. Når jeg bliver i programmet og næste gang aktiverer buttom afleveres der ikke oplysninger som anført under handling1 men programmet springer til handling handling 3 og udfører altså handling 1 og 3 under ét, altså på samme "ark". Handling nr. 2 er hele tiden korrekt. Hvad har jeg gjort forkert?
Avatar billede maagefinke Nybegynder
22. januar 2004 - 22:28 #1
Her er programmet:
Private Sub CommandButton1_Click()
 
  '--Autodrift
   
  If ListBox1.Text = "Autodrift" Then
fastplads

'Handling1
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


Sheets("Auto").Activate
fastplads
'Handling2
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

Sheets("Bank").Activate
fastplads
'handling3
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
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
ListBox1.ListIndex = 0
ListBox3.ListIndex = 0
Avatar billede bak Forsker
22. januar 2004 - 22:44 #2
Vis lige fastplads også
Avatar billede bak Forsker
22. januar 2004 - 22:46 #3
Du mangler i slutningen af makroen at (Gen)aktivere det 1. ark.
Det betyder at handling 1 og 3 udføres på samme ark.
Avatar billede maagefinke Nybegynder
22. januar 2004 - 22:48 #4
fastplads:

Public Sub fastplads()
    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
End Sub
Avatar billede maagefinke Nybegynder
22. januar 2004 - 22:50 #5
På listbox3.click har jeg følgende, der skal kalde arket "post1" hvorpå handling1 skal udføres:
Private Sub ListBox3_Click()
If ListBox3.Text = "Januar" Then
  Sheets("Post1").Select
  ElseIf ListBox3.Text = "Februar" Then
  Sheets("Post2").Activate
  ElseIf ListBox3.Text = "Marts" Then
  Sheets("Post3").Activate
  ElseIf ListBox3.Text = "April" Then
  Sheets("Post4").Activate
  ElseIf ListBox3.Text = "Maj" Then
  Sheets("Post5").Activate
  ElseIf ListBox3.Text = "Juni" Then
  Sheets("Post6").Activate
  ElseIf ListBox3.Text = "Juli" Then
  Sheets("Post7").Activate
  ElseIf ListBox3.Text = "August" Then
  Sheets("Post8").Activate
  ElseIf ListBox3.Text = "September" Then
  Sheets("Post9").Activate
  ElseIf ListBox3.Text = "Oktober" Then
  Sheets("Post10").Activate
  ElseIf ListBox3.Text = "November" Then
  Sheets("Post11").Activate
  ElseIf ListBox3.Text = "December" Then
  Sheets("Post12").Activate
       
     
End If
Label13.Caption = Range("y101")

End Sub
Avatar billede maagefinke Nybegynder
22. januar 2004 - 22:54 #6
Jeg har prøvet af ændre koden til:
If ListBox3.Text = "Januar" Then
Sheets("post1").Activate
End If

  If ListBox1.Text = "Autodrift" Then
fastplads
osv
og så virker det tilsyneladende.
Men jeg vil gerne bibeholde listen januar, februar osv på listbox 3. Og det er måske heri fejlen ligger.
Meningen er, at når der skal posteres i januar,skal "post1" aktiveres, i februar er det "post2" der skal aktiveres. Alt for at undgå en masse if'er når jeg koder. Hvordan kan jeg ellers gøre?
Avatar billede maagefinke Nybegynder
22. januar 2004 - 22:58 #7
>Hvordan gør jeg det, bak?
Husk venligst, at det skal være et svar og ikke en kommentar! :0)
Avatar billede maagefinke Nybegynder
22. januar 2004 - 23:41 #8
>bak, jeg tror, at jeg fandt ud af det. Hvis du ikke har yderligere kommentarer, så lav venligst lige et svar, så du kan få dine point!
Avatar billede Slettet bruger
23. januar 2004 - 09:50 #9
Hvis du vil undgå if sætninger kan du bruge Select/Case statements (se hjælpen)

f.eks:
----------------------------
Select Case ListBox1.Text
        Case "Januar": Sheets("Post2").Activate
        Case "Februar": Sheets("Post3").Activate
        .
        .
        osv.

        Case Else:
End Select
----------------------------

Det er bare en anden måde at lave betingelser i koden.

Nu kan jeg ikke se hvad formålet med koden er, men det plejer ikke at være nødvendigt i VBA makroer at bruge .Select eller .Activate på et ark for at kunne gøre noget med det. Men det er måske det der er formålet ? :-)
Avatar billede maagefinke Nybegynder
23. januar 2004 - 11:28 #10
>blackadder Ja, jeg indtaster nogle tal i en form og disse tal skal så overføres til et eller andet ark. Om det er if eller case er ikke så vigtigt for mig. Meningen var at jeg ved hjælp af listen slap for at skrive betingelserne for hver mulighed.
Men jeg tror at problemet er løst nu. Jeg venter bare på at bak laver et svar, så han kan få nogle point. Men tak for hjælpen også til dig!
Avatar billede bak Forsker
25. januar 2004 - 10:15 #11
Her er så endelig et svar :-)
Avatar billede maagefinke Nybegynder
25. januar 2004 - 14:46 #12
tak for hjælpen!
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