Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen

Keypress Ereignis funktioniert nicht mit Refedit

Betrifft: Keypress Ereignis funktioniert nicht mit Refedit von: Sodonikus
Geschrieben am: 05.04.2013 18:01:56

Hi ich habe ein Problem mit dem Keypress Ereignis.

In meiner Textbox funktioniert dieses wunderbar, wenn ich es allerdings
in meinem RefEdit benutzen will bekomme ich folgende Fehlermeldung
für folgenden Ereignis-Kopf:

Private Sub Grenze_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select

Fehlermeldung:
Fehler beim Kompilieren. Deklaration der Prozedur entspricht nicht der
Beschreibung eines Ereignisses oder einer Prozedur mit demselben Namen.

Ich habe mir daraufhin das Objekt mal angeschaut und den Kopf wie folgt abgeändert:

Private Sub ObergrenzeBox_KeyPress(KeyAscii As Integer)

Das führte dazu das ich keine Fehlermeldung mehr bekam, aber trotzdem
noch ohne Einschränkung in meinem Feld tippen konnte, sprich meine Anweisungen
funktionierten nicht wie bei der Textbox.

Kennt jemand eine Lösung für das Problem oder eine andere Möglichkeit Eingaben direkt von der Tastatur in einem RefEdit nur teilweise zuzulassen (z.B. nur zahlen und ein Komma)

Mfg

  

Betrifft: Erkläre den Sinn für ein RefEdit ! (owT) von: EtoPHG
Geschrieben am: 05.04.2013 18:29:00




  

Betrifft: AW: Erkläre den Sinn für ein RefEdit ! (owT) von: Sodonikus
Geschrieben am: 05.04.2013 19:18:17

Ich weiss das man ein Refedit dazu nutzt Werte aus einer Tabelle einzulesen.
Ich muss trotzdem die Werte die man dort eingeben kann irgendwie über ein Keypress Event abfangen, aus Gründen die mit der Aufgabenstellung zusammenhängen.

Ich sehe im Objektmanager auch das das Objekt RefEdit eine Eigenschaft hat die eben meinem zweiten Syntax für Keypress entspricht, aus irgendeinem Grund funktioniert dies jedoch nicht.


  

Betrifft: AW: Erkläre den Sinn für ein RefEdit ! (owT) von: Luschi
Geschrieben am: 06.04.2013 08:35:51

Hallo Sodonikus,

wenn ich in einem Formular dieses RefEdit-Steuerelement einfüge, und das PressKey-Ereignis im Vba-Editor auswähle, dann sieht der automatisch eingefügte Prozedur-Rumpf bei mir so aus und dann klappt das auch!

Private Sub Grenze_KeyPress(KeyAscii As Integer)

End Sub
Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Erkläre den Sinn für ein RefEdit ! (owT) von: Sodonikus
Geschrieben am: 06.04.2013 12:09:21

Also genauso habe ich es versucht aber in meiner Form reagiert das Fenster einfach nicht.
Hier mein Code dazu:

Private Sub RefEdit1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
  Case 48 To 57
  Case 44
    If InStr(1, ObergrenzeBox.Text, ",") > 0 Then KeyAscii = 0
  Case Else
    KeyAscii = 0
End Select
End Sub
Gibt es vielleicht eine Eigenschaft des Refedit oder sonstwas die das verhindert? Ich hab wie
gesagt excel 2010, weiss nicht ob da andere Standard Einstellungen sind, aber mit einer
Textbox klappt es ja.


  

Betrifft: AW: Erkläre den Sinn für ein RefEdit ! (owT) von: Luschi
Geschrieben am: 06.04.2013 13:41:27

Hallo Sodonikus,

habe gerade mal ein bischen mit den RefEdit-Control (Excel 2010/13) rumgetestet. Die Ereignisse KeyPress, KeyUp & KeyDown reagieren nicht auf Tastenbedienungen. Warum sollten sie auch, da ja die Aufgabe dieses Steuerelementes ist, eine Textkette zurückzugegen, die einen Tabellenbereich repräsentiert, siehe:
Excel® 2010 Power Programming with VBA - by Walkenbach, John © 2010 John Wiley & Sons
Seite 458/459

RefEdit1.Text = ActiveWindow.RangeSelection.Address
On Error Resume Next
Set UserRange = Range(RefEdit1.Text)
If Err.Number <> 0 Then
   MsgBox "Invalid range selected"
   RefEdit1.SetFocus
   Exit Sub
End If
On Error GoTo 0
Man kann also erst nach dem Verlassen dieses Controls feststellen, ob der per Maus oder Tastatur übertragene Text sinnvoll ist und einem Range-Objekt entspricht.

Gruß von Luschi
aus klein-Paris

PS: Ich habe immer noch nicht begriffen, wozu Du das RefEdit-Element überhaupt benutzen willst, als zur Festlegung eines Rangebereiches.


  

Betrifft: AW: Erkläre den Sinn für ein RefEdit ! (owT) von: Sodonikus
Geschrieben am: 06.04.2013 15:40:54

Hm - es geht darum das ich das RefEdit wie eine textbox benutzen will.
wie gesagt haengt es mit der aufgabenstellung zusammen. was wäre denn eine geeignete
methode zu überprüfen ob in meinem refedit, dass ich auf ein range objekt übergeben will
auch wirklich eine range steht? ich übergebe aus der refeditbox ja nur einen string und kann
es schlecht darauf prüfen ob es tatsächlich eine range ist.


  

Betrifft: AW: Erkläre den Sinn für ein RefEdit ! (owT) von: Sodonikus
Geschrieben am: 06.04.2013 15:43:09

Bzw. Fehleingaben abzufangen ohne eine Goto Anweisung zu benutzen. Das darf ich nämlich nicht aus aufgabentechnischen Gründen.


  

Betrifft: AW: Erkläre den Sinn für ein RefEdit ! (owT) von: Sodonikus
Geschrieben am: 06.04.2013 15:48:16

Und wieso gibt es dann überhaupt ein KeyPress Event für Objekte vom Typ RefEdit, wenn dieses nicht nutzbar ist. Macht doch keinen Sinn...


  

Betrifft: AW: Erkläre den Sinn für ein RefEdit ! (owT) von: Luschi
Geschrieben am: 06.04.2013 17:37:19

Hallo Sodonikus,

im meinem letzten Posting habe ich Dir doch die Lösung vib j.Walkenbach geschickt:
Set UserRange = Range(RefEdit1.Text)
versucht aus dem Text-Inhalt des RefEdit-Controls eine Range-Objekt zu bilden. Geht das schief, hat UserRange den Wert 'Nothing' und
If Err.Number <> 0 Then
verzweigt in den Zweig, wo Du organisierst, eas in einem solchen Fall passieren soll.
Kommst Du damit nicht klar, dann poste ein bischen mehr Vba-Code.

Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Erkläre den Sinn für ein RefEdit ! (owT) von: Sodonikus
Geschrieben am: 06.04.2013 18:05:50

Ah verstehe, gibt es eine Art Liste welche Error Number welche Fehlermeldung auslöst?
In der Doku stand nichts beim error objekt.

Was ich auch nur sagen wollte war das es mich eben wundert das es ein Keypress Ereignis gibt, das man aber nicht benutzen kann.


 

Beiträge aus den Excel-Beispielen zum Thema "Keypress Ereignis funktioniert nicht mit Refedit"