Avatar billede Eleven Novice
06. november 2019 - 08:23 Der er 8 kommentarer og
1 løsning

VBA - Kommando knap - Klik, værdi i celle, klik værdi i næste celle

Hej

Jeg håber der er en hjælpsom bruger, der kan hjælpe mig i mål med lidt VBA kodning... Jeg vil forsøge at lave et værktøj til et event, hvor vi i dag bruger papir og blyant i store mængder.
Jeg har brug for 7 knapper.
Knap 1-6 skal have værdier med forskellige værdier fra 0,0 til 0,5 og den 7. knap skal reset et område.
Alt det har jeg løst i VBA, men min udfordring er, at jeg ønsker at næste klik på knap 1 til 6 indsætter værdi i næste tomme celle i området b2:b11.

Koden nedenfor finder den godt nok celle b3, men klikker jeg igen på knap 1-6, så ligger den værdien i celle b2

knap 7 fungerer som den skal

Kan nogen hjælpe med koderne? Det er helt sikkert min linje 2 for hver af knap 1-6 der skaber mine problemer...


Private Sub CommandButton1_Click()
Range("b2") = Range("b2") + 0 / 10
Range("b2").Select
For Each cell In Range("b2:b11")
If cell.Value = "" Then Exit For
cell.Offset(1, 0).Select
Next
End Sub
Private Sub CommandButton2_Click()
Range("b2") = Range("b2") + 1 / 10
Range("b2").Select
For Each cell In Range("b2:b11")
If cell.Value = "" Then Exit For
cell.Offset(1, 0).Select
Next
End Sub
Private Sub CommandButton3_Click()
Range("b2") = Range("b2") + 2 / 10
Range("b2").Select
For Each cell In Range("b2:b11")
If cell.Value = "" Then Exit For
cell.Offset(1, 0).Select
Next
End Sub
Private Sub CommandButton4_Click()
Range("b2") = Range("b2") + 3 / 10
Range("b2").Select
For Each cell In Range("b2:b11")
If cell.Value = "" Then Exit For
cell.Offset(1, 0).Select
Next
End Sub
Private Sub CommandButton5_Click()
Range("b2") = Range("b2") + 4 / 10
Range("b2").Select
For Each cell In Range("b2:b11")
If cell.Value = "" Then Exit For
cell.Offset(1, 0).Select
Next
End Sub
Private Sub CommandButton6_Click()
Range("b2") = Range("b2") + 5 / 10
Range("b2").Select
For Each cell In Range("b2:b11")
If cell.Value = "" Then Exit For
cell.Offset(1, 0).Select
Next
End Sub
Private Sub CommandButton7_Click()
Range("B2", "B11").Clear
End Sub



Jeg håber der er en vis og klog person der kan hjælpe mig af med problemet

På forhånd tak
Avatar billede Jan Hansen Ekspert
06. november 2019 - 08:56 #1
Prøv denne kode:

Option Explicit
Dim ws As Worksheet
Dim Cell As Range

Private Sub CommandButton1_Click()
    Cell = Cell.Offset(-1, 0) + 0 / 10
    Set Cell = Cell.Offset(1, 0)
End Sub

Private Sub CommandButton2_Click()
    Cell = Cell.Offset(-1, 0) + 1 / 10
    Set Cell = Cell.Offset(1, 0)
End Sub

Private Sub CommandButton3_Click()
    Cell = Cell.Offset(-1, 0) + 2 / 10
    Set Cell = Cell.Offset(1, 0)
End Sub

Private Sub CommandButton4_Click()
    Cell = Cell.Offset(-1, 0) + 3 / 10
    Set Cell = Cell.Offset(1, 0)
End Sub

Private Sub CommandButton5_Click()
    Cell = Cell.Offset(-1, 0) + 4 / 10
    Set Cell = Cell.Offset(1, 0)
End Sub

Private Sub CommandButton6_Click()
    Cell = Cell.Offset(-1, 0) + 5 / 10
    Set Cell = Cell.Offset(1, 0)
End Sub

Private Sub CommandButton7_Click()
    Set ws = ActiveSheet
    Set Cell = ws.Range("B2")
    ws.Range(Cell, Cell.Offset(0, 9)).Clear
End Sub

Private Sub Worksheet_Activate()
    Set ws = ActiveSheet
    Set Cell = ws.Range("B2")
End Sub
Avatar billede Eleven Novice
06. november 2019 - 09:01 #2
Jeg får Run-time error '13':

Type mismatch


På: Cell = Cell.Offset(-1, 0) + 0 / 10
Avatar billede Jan Hansen Ekspert
06. november 2019 - 09:24 #3
skift fane eller tryk knap 7
Avatar billede Eleven Novice
06. november 2019 - 09:24 #4
Det var kun første gang jeg fik den fejl...

Nu får jeg kun:

Run-time error '91':
Object variable or With block variable not set


Når jeg trykker på commandbutton1 , 2, 3..6
Avatar billede Jan Hansen Ekspert
06. november 2019 - 09:39 #5
prøv denne nye kode:

Option Explicit
Dim ws As Worksheet
Dim Cell As Range


Private Sub Knapper(Value As Integer)
Forfra:
    On Error GoTo Fejl
    Cell = Cell.Offset(-1, 0) + Value / 10
    Set Cell = Cell.Offset(1, 0)
    Exit Sub
Fejl:
    Set ws = ActiveSheet
    Set Cell = ws.Range("B2")
    GoTo Forfra
End Sub

Private Sub CommandButton1_Click()
    Knapper (0)
End Sub

Private Sub CommandButton2_Click()
    Knapper (1)
End Sub

Private Sub CommandButton3_Click()
    Knapper (2)
End Sub

Private Sub CommandButton4_Click()
    Knapper (3)
End Sub

Private Sub CommandButton5_Click()
    Knapper (4)
End Sub

Private Sub CommandButton6_Click()
    Knapper (5)
End Sub

Private Sub CommandButton7_Click()
    Dim ClearCell
    Set ws = ActiveSheet
    Set ClearCell = ws.Range("B2")
    Set ClearCell = Range(ClearCell, ClearCell.Offset(9, 0))
    ClearCell.Clear
    Set Cell = ws.Range("B2")
End Sub
Avatar billede Eleven Novice
06. november 2019 - 09:47 #6
Får stadig samme fejl :(
Avatar billede Jan Hansen Ekspert
06. november 2019 - 10:05 #7
Avatar billede Eleven Novice
06. november 2019 - 10:20 #8
Tak, det virkede også fra start... Det var fordi jeg havde en overskrift i b1 der skabte problemet

Tusind tak for hjælpen :)
Avatar billede Jan Hansen Ekspert
06. november 2019 - 10:27 #9
Velbekomme
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