Avatar billede Laugesen1 Mester
15. april 2012 - 21:10 Der er 5 kommentarer og
1 løsning

Åben inputbox der indsætter værdi i en anden celle.

Jeg har indsat en knap i Excel der aktiverer en VBA kode.
Den åbner en inputbox, hvor der kan indtastes en værdi, der så efterfølende bliver indsat i en bestemt celle.

Public Sub IndsætKm()
Dim iResultat As Integer
iResultat = InputBox("Skal de kørte kilometer indsættes i(celle)")
Range("D5").Select
If Range("D5").Value = "" Then
Range("D5").Activate
ActiveCell.Value = iResultat
End If
End Sub

Jeg vil gerne ændre koden, så inputboxen ikke skal aktives med knappen, men bliver åbnet når en bestemt celle har en positiv værdi.
Altså efter en positiv værdi er indtastet og tryk på "Enter".

Sætningen i inputboxen er, " Skal de kørte kilometer indsættes i (celle)?".
VBA skal vide:
Hvis A1 >0, er D5 den første celle der skal indsættes værdi i.
D5 skal automatisk sættes ind i sætningen, så den lyder som følgende:
"Skal de kørte kilometer indsættes i D5?".

Efterfølgende sætninger skal automatisk rettes til, således at inputboxen, hvis A2>0, er følgende:
"Skal de kørte kilometer indsættes i D6?". OSV.

Eksempel:

A1=1
Inputbox åbnes med følgen sætning "Indsæt de kørte kilometer i celle D5"
Kilometer indtastes i inputbox og indsættes i D5.

A2=1
Inputbox åbnes med følgen sætning "Indsæt de kørte kilometer i celle D6"
Kilometer indtastes i inputbox og indsættes i D6.

Det er en kolonne med 31 celler:
A1-A31
hvor værdierne indsættes i:
D5-D36

Jeg kan lave en kode for hver celle, men er det muligt lave en samlet kode for alle cellerne, så jeg ikke skal lave 31 næsten ens koder?

Laugesen
Avatar billede store-morten Ekspert
15. april 2012 - 23:24 #1
Prøv:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ExitSub
If Not Intersect(Range("A1:A31"), Target) Is Nothing Then
    If Target.Value > 0 Then
 
        Dim svar As String
        Dim svar2 As String
        Celle = Target.Offset(4, 3).Address
        svar = InputBox("Skal de kørte kilometer indsættes i " & Celle)
   
        If svar = "" Then
           
        Else
            If Target.Offset(4, 3).Value = "" Then
            Target.Offset(4, 3).Value = svar
            Exit Sub
            End If
                svar2 = MsgBox("Der står et tal i forvejen?" & vbCrLf & _
                      "Vil du oveskrive dette?", vbYesNo, "Advarsel!!!")
                If svar2 = vbYes Then
                Target.Offset(4, 3).Value = svar
                ElseIf svar = vbNo Then
               
                End If
        End If
    End If
End If
ExitSub:
Exit Sub
End Sub
Avatar billede Laugesen1 Mester
16. april 2012 - 00:42 #2
Hej Morten

Tak for dit svar.

Jeg er lige begyndt at bruge VBA, så jeg indsætter måske din kode forkert.
Jeg har oprettet et modul, indsat en procedure og kopieret din kode over.

Når jeg kører proceduren, hvor første linje er:
Private Sub Worksheet_Change(ByVal Target As Range)
så kommer der en dialogboks frem, hvor jeg skal indtastet makro name.

Hvis jeg kører proceduren, hvor første linje er:
Public Sub KørsteKm()
så kommer der en dialogboks frem, med følgende:
Compile error
Expected endsub

Laugesen
Avatar billede store-morten Ekspert
16. april 2012 - 06:00 #3
Kopier koden
Tryk alt+F11
Dobbelt klik på det Ark makroen skal virke på (ikke i et Modul)
Tryk ctrl+v og luk på det røde kryds.

Og koden vil køre når du taster et tal større end 0 i cellerne A1 til A31 på det aktuelle Ark.
Avatar billede Laugesen1 Mester
16. april 2012 - 09:30 #4
Så virker det.
Og super godt med den ekstra dialogbox, hvis der står et tal i destinationscellen i forvejen.

Tak for hjælpen.

Sender du et svar til mig?

Laugesen
Avatar billede store-morten Ekspert
16. april 2012 - 11:59 #5
Det var godt, det antal kilometer man skal indtaste, er det samme tal som tastes i celle A1?

Velbekomme og et 'Svar'
Avatar billede Laugesen1 Mester
16. april 2012 - 23:48 #6
Hej Morten

Nej, det tal man skal indtaste er ikke det samme tal som tastes i A1.
Men når A1, eller andre celler, har positiv værdi, skal der også indtastes en værdi i en tilsvarende celle i kolonne D.

Det virker lige efter hensigten.

Endnu engang tak for hjælpen.

Laugesen
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