Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1212to1216
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

... Or... Or... kürzer fassen

... Or... Or... kürzer fassen
Lorenz
Hallo Excelscheff`s
Wie kann man sinnvoll nachfolgenden Code gestalten? Es würden bis zu 45 Or`s folgen
Dim sht As Worksheet (myUser liefert String)
If myUser = "Name1" Or myUser = "Maeierer" Or myUser = sht.Range("H1") Or myUser = sht.Range("I1") Or myUser = sht.Range("J1") Or myUser = sht.Range("K1") Then....
Danke für die Mühen im voraus
lG Lorenz

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: ... Or... Or... kürzer fassen
08.05.2011 16:06:28
Reinhard
Hallo Lorenz,
vielleicht so:
If myUser = "Name1" Or myUser = "Maeierer" Or application.countif(sht.Range("H1:K1"),myuser) >0  _
Then....

Gruß
Reinhard
AW: ... Or... Or... kürzer fassen
08.05.2011 16:07:59
hary
Hallo Lorenz
wie waers mit VBA Zaehlenwenn? Du hast die Namen ja schon in einem Blatt.

Dim myUser As String
myUser = "a"
If WorksheetFunction.CountIf(Sheets("Tabelle1").Range("H1:N1"), myUser) = 1 Then '  _
Tabellenname und Range anpassen
MsgBox "erlaubt"
Else
MsgBox "nicht erlaubt"
End If

vlt. hilts weiter.
gruss hary
Anzeige
Danke euch beiden
08.05.2011 16:13:50
Lorenz
Hallo
Super, Danke
Habe die Reinhard-Variante genommen
Danke nochmals u. Grüsse
Lorenz
Kombination
08.05.2011 16:20:21
CitizenX
Hallo Lorenz ,
Option Explicit
Sub myTest()
Dim myUser As String
Dim sht As Worksheet
Dim blnPerson As Boolean
Set sht = Sheets("Tabelle1")
myUser = "Testperson"  'anpassen
Select Case myUser
Case "Name1", "Maeierer" ', "Testperson"  'hier kannst du weitere Namen eintragen
blnPerson = True
Case Else
'hier den Bereich der Tabelle anpassen in dem die Namen stehen
If WorksheetFunction.CountIf(sht.Range(Cells(1, 8), Cells(1, 45)), myUser) Then
blnPerson = True
End If
End Select
If blnPerson Then
MsgBox myUser & " ist vorhanden "
Else
MsgBox myUser & " ist nicht vorhanden "
End If
End Sub

Grüße
Steffen
Anzeige
AW: Kombination
08.05.2011 16:25:36
Lorenz
Hallo Steffen
Danke auch dir
Habe aber schon die Reinhard-Var eingebaut.
Verwende Deine "zum Lernen"
Grüsse
Lorenz
Vorsicht - Referenzierung
08.05.2011 17:38:24
Erich
Hi Steffen,
der Ausdruck "sht.Range(Cells(1, 8), Cells(1, 45))" kann leicht einen Fehler erzeugen.
Das "sht." vor dem Range muss nicht ausreichen. Cells(1,8) und Cells(1,45) gehören zum (zufällig) gerade aktiven Blatt
oder zu dem Blatt, zu dem der Code gehört. Das muss beides nicht sht sein.
Entweder ist "sht." vor Cells() erfotrderlich - oder überhaupt überflüssig.
Sicherer und einfacher ist die Verswendung eines With-Blocks, wie hier:

Sub myTest2()
Dim myUser As String, blnNot As Boolean
With Sheets("Tabelle1")
myUser = "Testperson"      'anpassen
Select Case myUser
Case "Name1", "Maeierer" ', "Testperson"  ' evtl. weitere Namen
Case Else
If WorksheetFunction.CountIf(.Range(.Cells(1, 8), .Cells(1, 45)), _
myUser) = 0 Then blnNot = True
End Select
End With
If blnNot Then
MsgBox myUser & " ist nicht vorhanden "
Else
MsgBox myUser & " ist vorhanden "
End If
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Danke Erich ! owT Grüße Steffen
08.05.2011 17:42:37
CitizenX

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige