Det fungerar nu, jag placerade min eviga loop i slutet av:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Den triggas varje gång man flyttar markören.
Det känns lite fel att göra så men inget annat har fungerat.
Jag har gjort ett test som visar kedje-reaktionen Markörflyttning --> VB ändrar en cell --> En formel i en cell läser av värdet och räknar lite --> VB läser av resultatet och dribblar med diverse texter i bladet. Och allt upprepas kontinuerligt.
När man startar excel kör inte den eviga loopen (det är väl ok) och den stannar när man skriver något i en cell (mycket bra) och startar igen när man trycker enter.
Riktigt dålig film men jag visar den iaf:
http://ake.myftp.org/forum/Excel_Macro.MOV
Det jag planerar är att detta(nja.. något helt annat) ska användas i en CNC-maskin på jobbet så det är viktigt att det inte innehåller några "tveksamma lösningar".
Det som kan vara tveksamt i detta fall är den eviga loopen i slutet av Worksheet_SelectionChange som exekveras varje gång man flyttar markören.
Vad tycker expert-panelen om den lösningen, duger det i en CNC-maskin?
Kod: Markera allt
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Här lägger jag det som ska hända varje gång man flyttar markören
Worksheets("Blad1").Cells(20, 2) = Worksheets("Blad1").Cells(20, 2) + 1
Do
If (Timer > R1 + 0.5) Or (R1 > Timer) Then
R1 = Timer
'Denna kod körs 2 gånger/sekund kontinuerligt
Counter2 = Counter2 + 1
If Counter2 > 5 Then Counter2 = 0
If Counter2 = 0 Then Worksheets("Blad1").Cells(22, 5) = ">> "
If Counter2 = 1 Then Worksheets("Blad1").Cells(22, 5) = " >> "
If Counter2 = 2 Then Worksheets("Blad1").Cells(22, 5) = " >> "
If Counter2 = 3 Then Worksheets("Blad1").Cells(22, 5) = " >> "
If Counter2 = 4 Then Worksheets("Blad1").Cells(22, 5) = " >> "
If Counter2 = 5 Then Worksheets("Blad1").Cells(22, 5) = " >>"
Worksheets("Blad1").Cells(21, 2) = Worksheets("Blad1").Cells(21, 2) + 1
End If
DoEvents
Loop
[EDIT] Jag har ändrat så att programmet använder den inbyggda sekundräknaren för att bestämma när något ska hända så nu blir det inte cpu-beroende.