Avatar billede jath08ac Forsker
06. juli 2020 - 18:54 Der er 17 kommentarer

Run time error 400 i VBA kode - HJÆLP :-) :-)

Hej,

Jeg har en kode der driller mig lidt :-) Når man står i Excel filen og den aktive celle du står indeholder beskrivelse "Automatisk kontrol" eller "Manuel med automatisk kontrolelement" så har jeg lavet en UserForm, hvor der skal udfyldes nogle spørgsmål

Når man så klikker på knappen CommandButton1, så får jeg en fejlmeddelelse:
Run-time error '400':
Form already displayed; can't show modally
Når jeg trykker på Debug, så bliver linjen UserForm6.show markedt med gul

Hvad har jeg gjort forkert?

pft. ;-)

Kode der åbner Userform:

Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Value = "Automatisk kontrol" Then
    UserForm6.Show
    Unload Me
ElseIf ActiveCell.Value = "Manuel med automatisk kontrolelement" Then
  UserForm6.Show
  Unload Me
Else
    Exit Sub
End If

Kode til knappen: CommandButton1 i Userform:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
ShtName = ActiveSheet.Name
Sheets(ShtName).Columns("AQ:DG").EntireColumn.Hidden = False
' xxxxxxxxxxxxxxxxxxx PENSION & SIKRING xxxxxxxxxxxxxxxxxxxxxxxx

Sheets(ShtName).Cells(2, 45) = CheckBox1.Value
Sheets(ShtName).Cells(3, 45) = CheckBox2.Value
Sheets(ShtName).Cells(4, 45) = CheckBox3.Value
Sheets(ShtName).Cells(5, 45) = CheckBox45.Value

'xxxxxxxxxxxxxxxxxxxxxx P & I xxxxxxxxxxxxxxxxxxxxx
     
Sheets(ShtName).Cells(2, 48) = CheckBox4.Value
Sheets(ShtName).Cells(3, 48) = CheckBox5.Value
Sheets(ShtName).Cells(4, 48) = CheckBox6.Value
Sheets(ShtName).Cells(5, 48) = CheckBox7.Value
Sheets(ShtName).Cells(6, 48) = CheckBox8.Value
Sheets(ShtName).Cells(7, 48) = CheckBox9.Value
Sheets(ShtName).Cells(8, 48) = CheckBox10.Value
Sheets(ShtName).Cells(9, 48) = CheckBox44.Value

'xxxxxxxxxxxxxxxxxxxxxx UDK  xxxxxxxxxxxxxxxxxxxxx

Sheets(ShtName).Cells(2, 51) = CheckBox11.Value
Sheets(ShtName).Cells(3, 51) = CheckBox12.Value
Sheets(ShtName).Cells(4, 51) = CheckBox13.Value
Sheets(ShtName).Cells(5, 51) = CheckBox14.Value
Sheets(ShtName).Cells(6, 51) = CheckBox15.Value
Sheets(ShtName).Cells(7, 51) = CheckBox16.Value
Sheets(ShtName).Cells(8, 51) = CheckBox17.Value
Sheets(ShtName).Cells(9, 51) = CheckBox18.Value
Sheets(ShtName).Cells(10, 51) = CheckBox19.Value
Sheets(ShtName).Cells(11, 51) = CheckBox43.Value

' xxxxxxxxxxxxxxxxxxxxxx UDK xxxxxxxxxxxxxxxxxxxxx

Sheets(ShtName).Cells(2, 54) = CheckBox20.Value
Sheets(ShtName).Cells(3, 54) = CheckBox21.Value
Sheets(ShtName).Cells(4, 54) = CheckBox22.Value
Sheets(ShtName).Cells(5, 54) = CheckBox23.Value
Sheets(ShtName).Cells(6, 54) = CheckBox24.Value
Sheets(ShtName).Cells(7, 54) = CheckBox25.Value
Sheets(ShtName).Cells(8, 54) = CheckBox26.Value
Sheets(ShtName).Cells(9, 54) = CheckBox27.Value
Sheets(ShtName).Cells(10, 54) = CheckBox28.Value
Sheets(ShtName).Cells(11, 54) = CheckBox29.Value
Sheets(ShtName).Cells(12, 54) = CheckBox30.Value
Sheets(ShtName).Cells(13, 54) = CheckBox31.Value
Sheets(ShtName).Cells(14, 54) = CheckBox32.Value
Sheets(ShtName).Cells(15, 54) = CheckBox33.Value
Sheets(ShtName).Cells(16, 54) = CheckBox34.Value
Sheets(ShtName).Cells(17, 54) = CheckBox42.Value

'xxxxxxxxxxxxxxxxxxxxxx Øvrige xxxxxxxxxxxxxxxxxxxxx

Sheets(ShtName).Cells(2, 57) = CheckBox35.Value
Sheets(ShtName).Cells(3, 57) = CheckBox36.Value
Sheets(ShtName).Cells(4, 57) = CheckBox37.Value
Sheets(ShtName).Cells(5, 57) = CheckBox38.Value
Sheets(ShtName).Cells(6, 57) = CheckBox39.Value
Sheets(ShtName).Cells(7, 57) = CheckBox40.Value
Sheets(ShtName).Cells(8, 57) = CheckBox41.Value
Sheets(ShtName).Cells(9, 57) = CheckBox46.Value
Sheets(ShtName).Cells(10, 57) = CheckBox47.Value

Sheets(ShtName).Cells(2, 59) = TextBox1.Value

If Sheets(ShtName).Range("AR16").Value > 0 Then
    Range("SystemerAndet").EntireRow.Hidden = False
Else
    Range("SystemerAndet").EntireRow.Hidden = True
End If

Sheets(ShtName).Columns("AQ:DG").EntireColumn.Hidden = True
Range("SystemerAnvendt").EntireRow.Hidden = False
End Sub
Avatar billede store-morten Ekspert
06. juli 2020 - 19:49 #1
Hver gang du skriver til en celle, vil den åbne Userformen igen.
Avatar billede jath08ac Forsker
06. juli 2020 - 19:53 #2
@store-morten
Tak for det - Er der en måde hvorpå jeg kan undgå denne fejl?
Avatar billede store-morten Ekspert
06. juli 2020 - 19:57 #3
1. Når Userformen åbnes, marker en tom celle.

Eller

2. Sæt Event til: false, når Userformen åbnes og til bage til: True, når den lukkes.
Avatar billede jath08ac Forsker
06. juli 2020 - 20:20 #4
Hvor skal jeg indsætte Event false og event true henne.
Kom til at sætte Event = false ind i UserForm_Initialize og Event = True unde i koden der åbner Userformen - Så nu kan jeg sku ikke få den frem igen :-(
Avatar billede store-morten Ekspert
06. juli 2020 - 20:27 #5
Den skal være i din:
Private Sub Worksheet_Change(ByVal Target As Range)

Kør denne for at få den tilbage:

Sub EventTil()
Application.EnableEvents = True
End Sub
Avatar billede store-morten Ekspert
06. juli 2020 - 20:29 #6
Er det en bestemt celler der har: Automatisk kontrol?
Avatar billede store-morten Ekspert
06. juli 2020 - 20:37 #7
Hov... det er forkert, den skal ligge på din knap.
Avatar billede store-morten Ekspert
06. juli 2020 - 20:42 #8
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False '<-- Husk den skal også sættes igen
Application.EnableEvents = False

'din kode

Application.ScreenUpdating = True
Application.EnableEvents = True
Avatar billede jath08ac Forsker
06. juli 2020 - 20:52 #9
@Store-morten
Det fungere - nu er der bare en anden lille kode der driller mig :-(
Avatar billede store-morten Ekspert
06. juli 2020 - 20:54 #10
Øv..... ;-)

Kom frisk
Avatar billede store-morten Ekspert
06. juli 2020 - 20:57 #11
Køres kun hvis A2 ændres:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A2")) Is Nothing Then
    If Target.Value = "Automatisk kontrol" Or Target.Value = "Manuel med automatisk kontrolelement" Then
        UserForm1.Show
    End If
End If
End Sub
Avatar billede jath08ac Forsker
06. juli 2020 - 20:59 #12
Det er denne kode (Se pil <=======) der driller. Den øverste del er den der viser UserForme'en. Men den anden del af if koden skal slette det indhold som brugeren evt. har indtastet med UserFormen. Så hvis man i den ActiveCell  vælger (via dropdown list) "Manuel", så skulle skulle enden del af if koden gerne køre, men det gør den ikke. Og når jeg har valgt "Manuel" og jeg så efterfølgende vælger "Automatisk kontrol", så får jeg ikke vidt UserForm'en :-(

If ActiveCell.Value = "Automatisk kontrol" Or ActiveCell.Value = "Manuel med automatisk kontrolelement" Then
    UserForm6.Show
Else <===========
    Range("SystemerAnvendt").EntireRow.Hidden = True
    Sheets(ShtName).Columns("AQ:DG").EntireColumn.Hidden = False
    For a = 2 To 5
        Cells(a, 45).Value = False
    Next a

    For b = 2 To 9
        Cells(b, 48).Value = False
    Next b

    For c = 2 To 11
        Cells(c, 51).Value = False
    Next c

    For d = 2 To 17
        Cells(d, 54).Value = False
    Next d

    For e = 2 To 10
        Cells(e, 57).Value = False
    Next e

    Sheets(ShtName).Columns("AQ:DG").EntireColumn.Hidden = True
Avatar billede store-morten Ekspert
06. juli 2020 - 21:10 #13
Den vil jo for søge at nulstille hver gang der ændres i arket?
Avatar billede jath08ac Forsker
06. juli 2020 - 21:13 #14
Ja, det har du jo ret I. Skal nok ændre den til, at den også skal se på hvad den ActiveCelle har af værdi
Avatar billede store-morten Ekspert
06. juli 2020 - 21:14 #15
Se #11
Avatar billede store-morten Ekspert
06. juli 2020 - 21:19 #16
Prøv:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A2")) Is Nothing Then '<-- Tilrettes
    If Target.Value = "Automatisk kontrol" Or Target.Value = "Manuel med automatisk kontrolelement" Then
        UserForm1.Show
    End If

    If Target.Value = "Manuel" Then
   
    'Din nulstille kode
   
    End If
End If
End Sub
Avatar billede store-morten Ekspert
06. juli 2020 - 21:30 #17
F.eks. sådan:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A2")) Is Nothing Then '<-- Tilrettes
    If Target.Value = "Automatisk kontrol" Or Target.Value = "Manuel med automatisk kontrolelement" Then
        UserForm1.Show
    End If

    If Target.Value = "Manuel" Then
        Call NulStil
    End If
End If
End Sub

Sub NulStil()
    Range("SystemerAnvendt").EntireRow.Hidden = True
    Sheets(ShtName).Columns("AQ:DG").EntireColumn.Hidden = False
    For a = 2 To 5
        Cells(a, 45).Value = False
    Next a

    For b = 2 To 9
        Cells(b, 48).Value = False
    Next b

    For c = 2 To 11
        Cells(c, 51).Value = False
    Next c

    For d = 2 To 17
        Cells(d, 54).Value = False
    Next d

    For e = 2 To 10
        Cells(e, 57).Value = False
    Next e

    Sheets(ShtName).Columns("AQ:DG").EntireColumn.Hidden = True
End Sub
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