Avatar billede HPA Juniormester
30. juni 2020 - 09:09 Der er 10 kommentarer og
1 løsning

Inputbox indtast værdi betinget af værdi i anden celle

Jeg har et ark, hvor brugeren af arket vælger nogle værdier ud fra en rulleliste. I denne liste er der eksempelvis 4 muligheder, hvoraf den ene hedder "NY TC". Når brugeren vælger denne værdi, skal der komme en inputbox frem, hvor man kan taste et tal, der indsættes i en anden celle.
Hvis brugeren ikke vælger noget eller en af de øvrige muligheder fra rullelisten, skal der blot indsættes en formel i cellen.

Jeg har forsøgt mig med følgende kode, men tallet fra inputboksen sættes ikke ind i cellen. Det virkede fint inden jeg skrev at formlen skulle sættes ind, hvis værdien var forskellig fra "NY TC" - hvad gør jeg galt?

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ExitSub
If Not Intersect(Range("C26"), Target) Is Nothing Then
    If Target.Value = "NY TC" Then

        Dim svar As String
        Dim svar2 As String
        Celle = Target.Offset(0, 2).Address
        svar = InputBox("Indtast pris ny TopCup")
        FormulaLocal = "=IF($C$26=""NY TC"";""indtast pris her"";IF(E$22="""";0;IF($C26="""";0;VLOOKUP(VLOOKUP($C26;Emballager!$A:$C;3;FALSE)&0;Udtræk!$J:$L;2;FALSE))))"
       
        If svar <> "NY TC" Then
         
        Else
            If Target.Offset(0, 2).Value = "NY TC" Then
            Target.Offset(0, 2).Value = svar
          Exit Sub
            End If
                If Target.Offset(0, 2).Value <> "NY TC" Then
            Target.Offset(0, 2).Value = FormulaLocal
             
                End If
               
        End If
    End If
End If

Exit Sub
End Sub
Avatar billede Jan K Ekspert
30. juni 2020 - 09:36 #1
If svar <>.... Then hvad? Du går direkte fra If til Else
Avatar billede HPA Juniormester
30. juni 2020 - 09:57 #2
Ja det er helt klart noget galt der.

Burde vel være noget i den her stil, men virker stadig ikke

  If svar <> "NY TC" Then
        Target.Offset(0, 2).Value = FormulaLocal
         
        Else
            If Target.Offset(0, 2).Value = "NY TC" Then
            Target.Offset(0, 2).Value = svar
          Exit Sub
            End If
Avatar billede Jan K Ekspert
30. juni 2020 - 11:22 #3
Ja, noget i den stil.
Avatar billede HPA Juniormester
30. juni 2020 - 11:32 #4
Men data fra inputbox kommer ikke ind i cellen alligevel
Avatar billede Jan K Ekspert
30. juni 2020 - 12:59 #5
Forstår jeg dig rigtigt, når jeg læser det som om at hvis der står "NY TC" i C28, skal denne tekst overskrives med det, der tastes i InputBoxen?
Avatar billede HPA Juniormester
01. juli 2020 - 10:32 #6
Hvis man vælger "NY TC" i en rulleliste i felt C26, så skal formel overskrives i felt E26
Og ellers skal formlen stå i felt E26.

Det virkede fint inden jeg begyndte at få excel til at ligge formlen ind, så jeg er sikker på der skal stå (0, 2) og ikke (2, 0)

Pt. indsættes værdien bare ikke nogen steder, når jeg indtaster værdi i inputboksen og trykker ok.
Avatar billede Jan K Ekspert
01. juli 2020 - 12:02 #7
Jeg prøver at se på det. Umiddelbart ser det dog ud til at formlen, du vil indsætte er en blanding af dansk og engelsk, idet du bruger engelske funktionsnavne og så semikolon som argumentadskiller, hvor det nok bør være komma.
Avatar billede Jan K Ekspert
01. juli 2020 - 12:10 #8
Prøv med dette:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Svar As String, Formel As String
   
    Formel = "=IF($C$26=""NY TC"",""indtast pris her"",IF(E$22="""",0,IF($C26="""",0,VLOOKUP(VLOOKUP($C26,Emballager!$A:$C,3,FALSE)&0,Udtræk!$J:$L,2,FALSE))))"

    If Not Intersect(Range("C26"), Target) Is Nothing Then
        If Target.Value = "NY TC" Then
            Svar = InputBox("Indtast pris ny TopCup")
            Target.Offset(0, 2) = Svar
        Else
            Target.Offset(0, 2) = Formel
        End If
    End If
   
End Sub

Jeg kan desværre ikke teste det helt, da formlen fejler fordi jeg ikke har de ark, du laver opslag i.
Avatar billede HPA Juniormester
01. juli 2020 - 14:10 #9
Tak!
Det virker helt efter hensigten - fantastisk
Avatar billede HPA Juniormester
01. juli 2020 - 14:15 #10
Hvis jeg nu vil have samme funktion i næste række (C27), men det ikke hedder "NY TC" men eksempelvis "NY OC" - hvordan får jeg så tilføjet dette i koden?

Jeg kan vel ikke lave flere private sub?
Avatar billede Jan K Ekspert
01. juli 2020 - 14:57 #11
Det kan du ikke desværre. Du er derfor nok nødt til atomdefinere dit oprindelige Target. og se om det ligger i enten C26 elle C27, og så gøre en ting, hvis det er C26 og en andne, hvis det er C27. Jeg har dog ikke mulighed for at prøve lige pt.
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