Clever-Excel-Forum

Normale Version: Excel Netzplan die 2.: Reihenfolge der Eingabezellen festlegen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

da ich dank eurer Hilfe die Netzplan AOB hinbekommen habe, ist die Übung fast perfekt.

Da ich aber leider ein pingeliger Perfektionist bin, habe ich noch eine letzte Frage und hoffe ihr könnt mir auch hier helfen.

Ich würde gerne die Reihenfolge der Eingabezellen vorgeben.

Also wenn z.B. in Zelle B16 ein Wert eingegeben wurde und der User Enter drückt, würde als nächstes ja automatsich die Zelle B17 ausgewählt um dort die nächste Eingabe zu tätigen.

Kann man das so ändern, dass der nach Eingabe in B16 und Enter zu C16 anstatt zu B17 springt?

Zelle B17 zu sperren ist keine Option, da in B17 später noch eine Eingabe getätigt werden muss.

Ich habe hier mal einen Screenshot erstellt, wie die Reihenfolge aussehen soll.
Ignoriert bitte die blauen und schwarzen Pfeile. Die gehören zum Netzplan.
Die roten Pfeile zeigen den Hinweg (von B16 zu T15 zeigen) und die grünen Pfeile zeigen den Rückweg (von T17 zu B17)

[attachment=9861]

Gibt es da eine Möglichkeit die Reihenfolge festzulegen?

Viel Grüße,
Mark
Hallo Mark,

Zitat:Kann man das so ändern, dass der nach Eingabe in B16 und Enter zu C16 anstatt zu B17 springt?

klar ginge das. ... mit Makros.
Deine Mappe muss mit Makros gespeichert werden. Xlsm
In der Mappe Alt + F11 drücken und links die Tabelle wählen.

Wie du siehst musst du auch fragen wie es geht :D
Ich versuche es mal ausm Kopf, also wenn es nicht geht einfach melden,
dann bin ich vielleicht auch schon wach xD


Code:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

   If Target.Address = "$B$16" Then Range("C16").Select

End Sub
Hallo Mark,

hier eine Variante, bei der man sich mit den üblichen Tasten(kombinationen) in den vorgegebenen Zellen vor und zurück bewegen kann:



' **************************************************************
'  Modul:  DieseArbeitsmappe  Typ = Element der Mappe(Sheet, Workbook, ...)
' **************************************************************


Option Explicit

Private Sub Workbook_Activate()
 'Application.DisplayFullScreen = True
 If ActiveSheet.CodeName = "Tabelle1" Then '<< TabellenCodename anpassen
   TabsteuerungEin
 End If
End Sub

Private Sub Workbook_Deactivate()
 'Application.DisplayFullScreen = False
 If ActiveSheet.CodeName = "Tabelle1" Then '<< TabellenCodename anpassen
   TabsteuerungAus
 End If
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 If Sh.CodeName = "Tabelle1" Then '<< TabellenCodename anpassen
   TabsteuerungEin
 Else
   TabsteuerungAus
 End If
End Sub



' **************************************************************
'  Modul:  mTabsteuerung  Typ = Allgemeines Modul
' **************************************************************


Option Explicit

Dim bolR As Boolean

Public Sub TabsteuerungAus()
 Application.OnKey "{RIGHT}"   'NACH-RECHTS-TASTE
 Application.OnKey "{TAB}"     'TAB
 Application.OnKey "{ENTER}"   'EINGABETASTE (Zehnertastatur)
 Application.OnKey "{RETURN}"  'EINGABETASTE
 Application.OnKey "{LEFT}"    'NACH-LINKS-TASTE
 Application.OnKey "{BS}"      'RÜCKTASTE
 Application.OnKey "+{TAB}"    'UMSCHALT+TAB
 Application.OnKey "+{ENTER}"  'UMSCHALT+EINGABETASTE (Zehnertastatur)
 Application.OnKey "+{RETURN}" 'UMSCHALT+EINGABETASTE
 'MsgBox "Tabsteuerung ist ausgeschaltet", vbInformation, "Tabsteuerung"
End Sub

Public Sub TabsteuerungEin()
 Application.OnKey "{RIGHT}", "TabV"
 Application.OnKey "{TAB}", "TabV"
 Application.OnKey "{ENTER}", "TabV"
 Application.OnKey "{RETURN}", "TabV"
 Application.OnKey "{LEFT}", "TabZ"
 Application.OnKey "{BS}", "TabZ"
 Application.OnKey "+{TAB}", "TabZ"
 Application.OnKey "+{ENTER}", "TabZ"
 Application.OnKey "+{RETURN}", "TabZ"
 'MsgBox "Tabsteuerung ist eingeschaltet", vbInformation, "Tabsteuerung"
End Sub

Private Sub TabV()
 bolR = False
 Navigieren
End Sub

Private Sub TabZ()
 bolR = True
 Navigieren
End Sub

Private Sub Navigieren()
 Dim i As Long, j As Long
 Static strZ As String
 Dim varA As Variant
 'Die Reihenfolge der Zellen entspricht der Vorwärtsrichtung
 varA = Array("B16", "C16", "D16", "H7", "I7", "J7", "M7", "N7", "O7", "H28", "I28", "J28", _
              "M28", "N28", "O28", "R15", "S15", "T15", "T16", "S16", "R16", "O8", "N8", "M8", _
              "J8", "I8", "H8", "O29", "N29", "M29", "J29", "I29", "H29", "D17", "C17", "B17")
 For i = 0 To UBound(varA) - 1
   If varA(i) = ActiveCell.Address(0, 0) Then
     j = 1
     Exit For
   End If
 Next i
 If j = 1 Then
   strZ = ActiveCell.Address(0, 0)
   j = 0
 Else
   For i = 0 To UBound(varA) - 1
     If varA(i) = strZ Then Exit For
   Next i
 End If
 If bolR Then
   If i = 0 Then
     strZ = varA(UBound(varA) - j)
   Else
     strZ = varA(i - j - 1)
   End If
 Else
   strZ = varA((i + j + 1) Mod (UBound(varA) + 1))
 End If
 Range(strZ).Select
End Sub

Code eingefügt mit: Excel Code Jeanie

Gruß Uwe
Hallo zusammen,

vielen Dank für die ausführlichen Antworten.

Da ich von Makros 0 Ahnung habe, habe ich mich erstmal ein bisschen damit beschäftigt.

Leider funktioniert das nicht bei mir. Ich schätze, ich übersehe etwas was ich dabei noch ändern muss.

Ich habe den Tabellennamen angepasst, jedoch tut sich bei mir nichts, und er wechselt weiterhin von B16 zu B17 zu C16 zu C17...

Poste heute Abend mal das Makro, evtl. fällt euch auf, was ich übersehe.

Vielen Dank für die Unterstützung und viele Grüße,
Mark
Hallo Mark,

da "heute Abend" schon vorgestern war eine Frage - Hast Du den Fehler inzwischen gefunden?
Moin,

... und ich würde übermorgen anfangen, eine Userform zu bauen. Das sollte dem Gedanken der Perfektion am nächsten kommen.