MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 18.01.2018, 13:59   #1
Foulcrow
MOF User
MOF User
Standard VBA - Delete und Backspace in TextBox deaktivieren

Hallo,

gibt es eine Möglichkeit, in einer Textbox einer Userform die Tasten Delete und Backspace zu deaktivieren? Die Eingabe in der Textbox darf nicht gelöscht werden, sondern soll überschrieben werden.

Folgender Hintergrund:
Code:

Private Sub TextBox48_Change()
    Dim Suchbegriff As Range
    Application.ScreenUpdating = False
    Sheets("alle").Visible = True
    Sheets("alle").Select

    With Range("S2:S" & Range("S65536").End(xlUp).Row)
    Set Suchbegriff = .Find(What:=TextBox48, LookIn:=xlValues)
    If Not Suchbegriff Is Nothing Then
    ListBox1.ListIndex = Suchbegriff.Row - 2
    End If
    End With
    
    Sheets("alle").Visible = False

End Sub
Mit diesem Code suche ich über eine Textbox einen bestimmten Datensatz in einer Listbox. Im originalen Code heißt es allerdings Suchbegriff.Row - 1

Ich durchsuche in verschiedenen Userformen Listen nach bestimmten Datensätzen. Immer hat Suchbegriff.Row - 1 problemlos funktioniert. Die Tabellen sind identisch aufgebaut: 1. Zeile Überschrift, ab der 2. Zeile die Daten.

Tabelle "Alle" hat mir mit Suchbegriff.Row -1 keinen richtigen Treffer angezeigt, mit Suchbegriff.Row - 2 dann schon. Der Nachteil ist nur, dass ich jetzt den Suchbegriff nicht mehr löschen kann um neu zu suchen. Überschreiben geht. Ich bekomme
Laufzeitfehler 380
Eigenschaft ListIndex konnte nicht gesetzt werden. Ungültiger Eigenschaftswert.

Deswegen meine Idee, die Entf-Taste und die Rücktaste in besagter Textbox zu deaktivieren.
Habe es mit onkey "{delete}", "" versucht, doch das geht nicht.

Kann mir bitte jemand weiterhelfen? Was ist bei Suchbegriff.Row - 2 falsch, bzw. wie kann ich diese beiden Tasten in der Textbox deaktivieren?

Freue mich über jede Hilfe.

beste Grüße Foulcrow
Foulcrow ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.01.2018, 18:43   #2
Werner.M
MOF User
MOF User
Standard

Hallo,

kannst du mal deine Mappe hochladen.

Gruß Werner
Werner.M ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.01.2018, 21:40   #3
H_E_K
MOF User
MOF User
Standard

Bestimmte Tasten kannst du mit dem Ereignis Key_Down sperren. In deinem Fall betrifft das die Keycodes 8 (Backspace) und 46 (Delete). Der Code in der Userform wäre dann dieser:
Code:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 8 Or KeyCode = 46 Then KeyCode = 0
End Sub
Davon unabhängig ist deine Codezeile
Code:

ListBox1.ListIndex = Suchbegriff.Row - 2
extrem fehlerträchtig. Wenn es den ListBox-Eintrag mit diesem Index nicht gibt, dann kommt der von dir beschriebene Fehler. Ich weiß ja nicht, wie du die ListBox befüllst, aber wohl nur mit den Treffer-Zeilen. Suchbegriff.Row liefert dir aber die absolute Zeile. Wenn du beispielsweise in Zeile 9 den ersten Treffer findest, dann ist Suchbegriff.Row = 9, aber der entsprechende ListBox-Eintrag hat den Index 0 (erster Eintrag). Deine Rechnung sucht nach 8 (...-1) bzw. 7 (...-2), die aber nicht in der Liste sind.

__________________

Gruß
Hans


Mit VBA löst du jedes Problem - und schaffst mindestens zwei neue ...
Windows 7 Pro, Windows 10 Home, Office 2013 H&S
H_E_K ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.01.2018, 09:54   #4
Foulcrow
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Hans,

vielen Dank, das hilft mir schon mal sehr weiter.
Den Code, so wie ich ihn reingestellt habe, habe ich im Internet gefunden. Allerdings bin ich in VBA Anfänger, und ich verstehe nicht, was er genau bedeutet. Er hat bei 3 Userformen funktioniert und bei der vierten Userform nicht.
Alle meine Listboxen werden folgendermaßen befüllt:

Code:

Private Sub UserForm_initialize()

    Dim lZeile As Long    

      'In dieser Routine laden wir alle vorhandenen
      'Einträge in die ListBox1
      ListBox1.Clear 'Zuerst einmal die Liste leeren
      
      lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
      'Schleife solange etwas in der neunzehnten Spalte in Tabelle 1 drin steht
      Do While Trim(CStr(Tabelle6.Cells(lZeile, 19).Value)) <> ""
          
          'Aktuelle Zeile in die ListBox eintragen
          ListBox1.AddItem Trim(CStr(Tabelle6.Cells(lZeile, 19).Value))
          
          lZeile = lZeile + 1 'Nächste Zeile bearbeiten
          
      Loop
 
End Sub
In meiner Textbox gebe ich nun einen Namen ein, z.B. Meier. Je nachdem, wie viele Buchstaben oder Zahlen ich eingebe, wird mir der erste gefundene Datensatz angezeigt. Nur eben bei besagter Userform nicht.

Ich werde aber erst mal deinen KeyDown-Vorschlag ausprobieren und mich danach noch einmal melden.

beste Grüße Foulcrow
Foulcrow ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.01.2018, 11:31   #5
H_E_K
MOF User
MOF User
Standard

Du solltest die Exceldatei hier hochladen, sonst ist das zu mühselig.

__________________

Gruß
Hans


Mit VBA löst du jedes Problem - und schaffst mindestens zwei neue ...
Windows 7 Pro, Windows 10 Home, Office 2013 H&S
H_E_K ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.01.2018, 12:02   #6
Foulcrow
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Hans,

dein KeyDown-Vorschlag funktioniert super. Recht herzlichen Dank dafür. Das mit dem Hochladen der Tabelle muss ich mal versuchen. Die Datenbank ist sehr komplex, keine Ahnung ob sie noch funktioniert, wenn ich einzelne Teile rausnehme. Ich versuchs mal.

beste Grüße Foulcrow
Foulcrow ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.