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
Jan K Ekspert
30. juni 2020 - 09:36 #1
If svar <>.... Then hvad? Du går direkte fra If til Else
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
Jan K Ekspert
30. juni 2020 - 11:22 #3
Ja, noget i den stil.
HPA Juniormester
30. juni 2020 - 11:32 #4
Men data fra inputbox kommer ikke ind i cellen alligevel
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?
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.
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.
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.
HPA Juniormester
01. juli 2020 - 14:10 #9
Tak!
Det virker helt efter hensigten - fantastisk
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?
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.
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

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





Premium
Cloud-teknologi sikrede dronningens corona-tale - men DRs CIO Mikkel Müller er slet ikke færdig med cloud endnu
Uden cloud og den rette cloud-strategi havde DR ikke haft samme muligheder eller nye digitale produkter. Det fortæller CIO Mikkel Müller til Computerworld - hvor han også uddyber hvordan han ser resten af it-landskabet bevæge sig mod cloud og hvordan udviklere efterspørger de moderne værktøjer.
Job & Karriere
På jagt efter et it-job i Jylland? Her er 10 stillinger fra Aabenraa til Aalborg, der ledige netop nu
Vi har fundet en række spændende stillinger til dig, der jagter et it-job. Her kan du vælge og vrage mellem ledige stillinger lige fra Aabenraa til Aalborg.
White paper
Mobility - her er de aktuelle udfordringer
Hvad med sikkerheden? Mobility-bølgen fejer igennem danske virksomheder, og der er masser af muligheder og faldgruber. Sikkerheden halter, men det kan der gøres noget ved. Produceret af Computerworld.dk i oktober 2014.