Nja, jag tror inte det går att bara tabba sig genom, utan du får lägga kod för att lyckas med det. </BR> Nopp, precis som EE skriver det måste till kod: Tack för hjälpen EE. Jag försökte lägga in kodex. på TextBox1 men fick då körfel 1004 "Activate-metoden i OLE-objekt klassen misslyckades". Heter rutan TextBox1, eller har du ändrat namnet? Ja, det gör mitt med, hos mig. ;-) EE, MW,Tabbar i Excel/VBA
Har gjort kontroller direkt på datablad och skulle vilja kunna tabba mellen de olika kontrollerna. Använder ej Userform men undrar om det finns något sätt då jag ej sett något " TabIndex " el "TabOrder"bland property
Tacksam för hjälp!
MVH
/GKSv: Tabbar i Excel/VBA
Ett exempel på hur det skulle kunna se ut: </BR>
<code>
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
' Tab skickar användaren vidare till nästa kontroll
TextBox2.Activate
End If
End Sub
Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab And Shift = 1 Then
' Shift+Tab skickar användaren till föregående kontroll
TextBox1.Activate
ElseIf KeyCode = vbKeyTab Then
' Tab skickar användaren vidare till nästa kontroll
TextBox3.Activate
End If
End Sub
</code>
/EESv: Tabbar i Excel/VBA
Placera följande i modulen ThisWorkbook
[kod]
Public C As Collection
Private Sub Workbook_Open()
Dim Obj As OLEObject
Set C = New Collection
For Each Obj In Sheet1.OLEObjects
If TypeOf Obj.Object Is MSForms.TextBox Then
C.Add New Class1
With C(C.Count)
Set .TB = Obj.Object
Set .Object = Obj
.Index = C.Count
End With
End If
Next Obj
End Sub
[/kod]
I en klassmodul - Class1
[kod]
Public WithEvents TB As MSForms.TextBox
Public Object As OLEObject
Public Index As Integer
Private Sub TB_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
Dim I As Integer, TBCount As Integer
If KeyCode <> 9 Then Exit Sub
TBCount = ThisWorkbook.C.Count
If Shift Then
If Index = 1 Then I = TBCount Else I = Index - 1
Else
If Index = TBCount Then I = 1 Else I = Index + 1
End If
ActiveWindow.RangeSelection.Select
ThisWorkbook.C(I).Object.Activate
End Sub
[/kod]
Tas det bort eller läggs till objekt måste koden köras om igen.
//MWSv: Tabbar i Excel/VBA
Har jag några felaktiga inställningar?
Vore tacksam för vidare hjälp
MVH
/GKSv: Tabbar i Excel/VBA
Använder du kontrollerna från "Kontroller"?
Borde fungera då ... Kolla och återkom.
/EESv: Tabbar i Excel/VBA
Ditt såg bra ut, även om jag inte testade det. Men det gäller att ha ordning på vilka kontroller som ska ingå i "tab-serien" så att säga. Man vill kanske sätta TabStop=False på vissa kontroller, samt att alla inte måste vara av samma typ. I mitt exempel måste man istället komma ihåg att lägga till koden för varje objekt som ska ingå, och då lägga ordningen redan där ...
Smal sak att lägga till i koden, bara en reflektion. :-)
Må väl i värmen.
/EESv: Tabbar i Excel/VBA
Absolut ingen kritik åt ditt förslag :-)
Alla lösningarna har sina fördelar ;-)
//MWSv: Tabbar i Excel/VBA
Nä, jag var nog ganska trött när jag läste och svarade också. :-)
Klart att alla lösningar har sina fördelar, och jag använder ju mycket sällan kontroller direkt på arbetsbladet utan väljer hellre fristående formulär genom VBA.
Lite nyfiken på att testa ditt exempel, men har inte hunnit än (övers: jag har varit för lat ;-) ).
Nu är det två veckor semester! :-)
Må väl.
/EE