Zufälliger Artikel

Problemstellung:

Mit einer Abfrage wie

If InStr(strText, "-") <> 0 Then...

kann ich prüfen, ob ein bestimmtes Zeichen in einer Zeichenkette vorhanden ist.
Um auf weitere Zeichen zu prüfen,
muss ich entsprechend viele "If.. Then.. ElseIf"-Abfragen hintereinander ausführen.
Geht das auch einfacher?  
Konkret möchte ich feststellen können, ob in einer Telefonnummer die Trennzeichen "-", "/", "(" oder ")" enthalten sind.

Abhilfe schafft eine benutzerdefinierte Funktion "MultiInStr()",
die Sie in einem neuen oder einem vorhandenen Modul ablegen:

Function MultiInStr(aStr As Variant, _
                   theChars As String) As Integer
  Dim I As Integer, Cnt As Integer
  Cnt = 0
  For I = 1 To Len(theChars)
    If InStr(aStr, Mid$(theChars, I, 1)) <> 0 Then
      Cnt = Cnt + 1
    End If
  Next I
  MultiInStr = Cnt
End Function

Aufruf:

If MultiInStr(strTelefon, "-/()") <> 0 Then

Die Funktion geht in einer Schleife alle per Parameter "theChars" spezifizierten Zeichen durch und prüft
mit der Standard-Funktion "InStr()", ob das Zeichen in der Zeichenkette gemäß "aStr" vorhanden ist.
Ist das der Fall, wird ein Zähler jeweils um eins erhöht und als Funktionsergebnis gesetzt.
Ist das Ergebnis "0", ist keines der Zeichen vorhanden, ein Ergebnis ungleich "0" zeigt an,
dass mindestens ein Zeichen in der Zeichenkette vorhanden ist.

 

 

Ähnliche Artikel

Home

1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

Problemstellung:

MS hat es immer wieder versäumt eine Möglichkeit in Access zu schaffen
das man vernünftig mit der Zwischenablage arbeiten kann.

Im Notfall könnte man ja mit SendKeys arbeiten (pfui).

Es geht auch anders.

1. Im VBA-Editor im Menü -> Extras -> Verweise auf "Durchsuchen" klicken.
2. Dann im WinSystem-Verzeichnis die FM20.dll suchen und auswählen.

3. Verweisfenster mit OK schliessen.

 

4. Code

Im Formularkopf diesen Code einfügen

Option Compare Database
Option Explicit
 
Dim clp As New MSForms.DataObject

Jetzt nur ein einfaches Bsp.
Das Formular hat 2 Textfelder (Text0 und Text2) sowie
2 Buttons (cmd_Copy und cmd_Paste)

Im Formular soll der Text das Feld Text0 ind das Feld Text2 kopiert werden. 

Private Sub cmd_Copy_Click()
     Dim sData As String
     sData = Me.Text0
     With clp
         .SetText sData
         .PutInClipboard
     End With
 End Sub
 
Private Sub cmd_Paste_Click()
     Dim sData As String
     With clp
         .GetFromClipboard
         sData = .GetText
         Me.Text2 = sData
     End With
 End Sub

So das wars auch schon.
Wie gesagt das ist nur ein einfaches Bsp.
Richtig Sinn macht es erst wenn die Zwischenablage in der ganzen DB zur Verfügung steht.

Dann solltet Ihr ein neues Modul erstellen.

Dann habt Ihr in der ganzen DB Zugriff.

Ähnliche Artikel

Kommentar schreiben

Sicherheitscode
Aktualisieren

Login Form

1.png1.png9.png1.png3.png6.png8.png
Heute19
Gestern75
Diese Woche417
Dieser Monat1301
Total1191368

  • IP: 54.81.71.187
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

1
Online

21. April 2018