Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1560to1564
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

wenn dann vba

wenn dann vba
07.06.2017 10:54:08
Sandra
Hallo zusammen,
ich habe gestern, mit freundlicher unterstützung von Werner (Danke nochmal), folgenden VBA Code gebastelt:
Private Sub CommandButton4_Click()
Dim varSuchbegriff As Variant
If IsNumeric(ComboBox1.Value) Then varSuchbegriff = Val(ComboBox1.Value) Else  _
varSuchbegriff = ComboBox1.Value
On Error Resume Next
Label11.Caption = WorksheetFunction.VLookup(ComboBox1.Value, Worksheets("Halle1").Range( _
_
"A:J"), 2, False)
Label10.Caption = WorksheetFunction.VLookup(ComboBox1.Value, Worksheets("Halle1").Range( _
_
"A:J"), 3, False)
Label9.Caption = WorksheetFunction.VLookup(ComboBox1.Value, Worksheets("Halle1").Range(" _
_
A:J"), 4, False)
Label14.Caption = WorksheetFunction.VLookup(ComboBox1.Value, Worksheets("Halle1").Range( _
_
"A:J"), 7, False)
Label15.Caption = WorksheetFunction.VLookup(ComboBox1.Value, Worksheets("Halle1").Range( _
_
"A:J"), 8, False)
Label17.Caption = WorksheetFunction.VLookup(ComboBox1.Value, Worksheets("Halle1").Range( _
_
"A:J"), 9, False)
If Err.Number  0 Then Label9.Caption = " Kein Eintrag vorhanden"
If Err.Number  0 Then Label10.Caption = " Kein Eintrag vorhanden"
If Err.Number  0 Then Label11.Caption = " Kein Eintrag vorhanden"
If Err.Number  0 Then Label14.Caption = " Kein Eintrag vorhanden"
If Err.Number  0 Then Label15.Caption = " Kein Eintrag vorhanden"
If Err.Number  0 Then Label17.Caption = " Kein Eintrag vorhanden"
On Error GoTo 0
End Sub

Leider funktioniert meine IF Funktion nicht so wie ich sie gerne hätte. Wenn mich nicht alles täuscht, muss das Err.Number ersetzt werden. Allerdings weiß ich ehrlich gesagt nicht durch was.
Alles was ich möchte, ist WENN kein Eintrag in Zelle DANN schreib "Kein Eintrag vorhanden"
Was mache ich falsch?
Schonmal ein riesen Danke vorab.
Gruß Sandra

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wenn dann vba
07.06.2017 11:23:56
ChrisL
Hi Sandra
Dein Code sieht eigentlich OK aus, wenn auch etwas unkonventionell. Zum Nachbauen und Fehlersuchen bin ich aber zu faul.
"Voraussehbare" Fehler würde ich nicht mittels Error-Handling erledigen, sonder z.B. so...
Dim varSuchbegriff As Variant
If IsNumeric(ComboBox1.Value) Then varSuchbegriff = Val(ComboBox1.Value) Else _
varSuchbegriff = ComboBox1.Value
With Worksheets("Halle1")
If WorksheetFunction.CountIf(.Columns(1), varSuchbegriff) > 0 Then
Label11.Caption = WorksheetFunction.VLookup(varSuchbegriff, .Range("A:J"), 2, False)
' weitere SVerweise
Else
Label11.Caption = "nix"
End If
End With

cu
Chris
Anzeige
AW: wenn dann vba
07.06.2017 11:52:28
Sandra
Hi Chris,
erstmal danke für die schnelle Antwort.
Haben den Code soweit angepasst, leider habe ich das gleiche Bild wie vorher.
Die Felder bleiben leer.
Private Sub CommandButton4_Click()
Dim varSuchbegriff As Variant
If IsNumeric(ComboBox1.Value) Then varSuchbegriff = Val(ComboBox1.Value) Else _
varSuchbegriff = ComboBox1.Value
With Worksheets("Halle1")
If WorksheetFunction.CountIf(.Columns(1), varSuchbegriff) > 0 Then
Label11.Caption = WorksheetFunction.VLookup(varSuchbegriff, .Range("A:J"), 2, False)
Label10.Caption = WorksheetFunction.VLookup(varSuchbegriff, .Range("A:J"), 3, False)
Label9.Caption = WorksheetFunction.VLookup(varSuchbegriff, .Range("A:J"), 4, False)
Label14.Caption = WorksheetFunction.VLookup(varSuchbegriff, .Range("A:J"), 7, False)
Label15.Caption = WorksheetFunction.VLookup(varSuchbegriff, .Range("A:J"), 8, False)
Label17.Caption = WorksheetFunction.VLookup(varSuchbegriff, .Range("A:J"), 9, False)
Else
Label11.Caption = "nix"
Label10.Caption = "nix"
Label9.Caption = "nix"
Label14.Caption = "nix"
Label15.Caption = "nix"
Label17.Caption = "nix"
End If
End With
End Sub
Stehe mit VBA noch ganz am Anfang, deswegen wohl etwas unkonventionell :)
Anzeige
AW: wenn dann vba
07.06.2017 12:35:58
ChrisL
Hi Sandra
Bitte ich um eine kleine Beispieldatei...
cu
Chris
AW: wenn dann vba
07.06.2017 12:29:39
Max2
Hallo,
da keine Beispiel Mappe mit entsprechendem Code, hier eine andere
Variante die Funktioniert:

Sub a()
Dim varSuche As Variant
Dim rng As Range
On Error Resume Next
If IsNumeric(ComboBox1.Value) Then varSuche = Val(ComboBox1.Value) Else: varSuche =  _
ComboBox1.Value
Label1.Caption = "Nicht vorhanden"
With Worksheets("Tabelle1")
Set rng = .Range("A:J")
Label1.Caption = .Cells(rng.Find(varSuche).Row, 2).Value
End With
End Sub
Du musst die Angaben eben noch auf deine Spalten usw. anpassen.
Anzeige
AW: wenn dann vba
07.06.2017 12:46:20
Sandra
Hallo Max2,
Dir auch erstmal ein fettes Danke. Läuft allerdings immer noch nicht.
ich bin wohl einfach nicht dafür gemacht.
Deswegen hier mal meine Beispieldatei mir meinem Ursprungscode.
https://www.herber.de/bbs/user/114088.xlsm
Danke für Eure Hilfe!
AW: wenn dann vba
07.06.2017 12:58:19
ChrisL
Hi Sandra
Auch dein ursprünglicher Code funktioniert. Allerdings solltest du die RowSource von der ComboBox nicht erst beim Ändern (Change) definieren.
Am einfachsten gehst du auf die Eigenschaft der ComboBox und definierst die RowSource fix:
Halle1!A2:A700
Das Change-Ereignis brauchst du dann natürlich nicht mehr:
Private Sub ComboBox1_Change()
Me.ComboBox1.RowSource = "Halle1!A2:A700"
End Sub
Wenn du die Eigenschaft MatchRequired auf True setzt, dann brauchst du das Fehlerhandling resp. die IF-Abfrage gar nicht mehr, weil nur noch vorhandene Artikelnummern zugelassen sind.
cu
Chris
Anzeige
AW: wenn dann vba
07.06.2017 13:24:02
Sandra
Hallo Chris,
ja die Vlookups funktionieren soweit, aber es füllt mir dir restlichen Felder nicht mit "Kein Eintrag vorhanden", wenn keine Angabe in der Zelle ist.
Natürlich kann man die leer lassen, allerdings fühlt sich der ein oder andere Kollege dadurch angesprochen und kann selber Einträge hinzufügen.
Danke für den Tipp mit der ComboBox macht das ganze etwas eleganter und benutzerfreundlicher.
Grüße Sandra
AW: wenn dann vba
07.06.2017 13:41:28
ChrisL
Hi Sandra
OK, jetzt verstehe ich das Problem erst. Ich dachte immer es ginge um das Fehlerhandling, wenn die Artikelnummer nicht gefunden wurde. Im nachstehenden Code habe ich die Prüfung ganz weggelassen, weil du die ComboBox-Einträge ja direkt aus der Tabelle beziehst, sind die Artikelnummern auch immer vorhanden.
Ob du leere Felder tatsächlich mit "nix" füllen willst, würde ich noch einmal überlegen. Bei einem Übertrag zurück in die Tabelle musst du dann alle "nix" wieder raus filtern.
Private Sub CommandButton4_Click()
Dim ar1 As Variant, ar2 As Variant, i As Integer, rng As Range
Dim strSuchbegriff As String: strSuchbegriff = ComboBox1
Set rng = Worksheets("Halle1").Range("A:J")
ar1 = Array(11, 10, 9, 14, 15, 17)
ar2 = Array(2, 3, 4, 7, 8, 9)
For i = 0 To UBound(ar1)
With Controls("Label" & ar1(i))
.Caption = WorksheetFunction.VLookup(strSuchbegriff, rng, ar2(i), False)
If .Caption = "" Then .Caption = "nix"
End With
Next i
End Sub
cu
Chris
Anzeige
AW: wenn dann vba
07.06.2017 13:50:25
Sandra
Hi Chris,
so funktionierts!!! Ich guck mal wie sich das in der Praxis bewährt.
Sorry, da hab ich mich anfangs wohl falsch ausgedrückt. Ich verspreche Besserung.
Danke, danke, danke an Chris, Rudi, Max2 für Eure Zeit und Geduld!
AW: Hier Mappe
07.06.2017 13:32:22
Sandra
Hallo,
Danke, aber die Felder in den der vlookup nichts findet bleiben immer noch leer :(
Grüße
Sandra
noch'n Gedicht
07.06.2017 12:49:24
Rudi
Hallo,
evtl. so?
Private Sub CommandButton4_Click()
Dim varSuchbegriff As Variant, varRow As Variant
varSuchbegriff = ComboBox1.Value
If IsNumeric(varSuchbegriff) Then varSuchbegriff = varSuchbegriff * 1
With Worksheets("Halle1")
varRow = Application.Match(varSuchbegriff, .Columns(1), 0)
If Not IsError(varRow) Then
Label11.Caption = .Cells(varRow, 2)
Label10.Caption = .Cells(varRow, 3)
Label9.Caption = .Cells(varRow, 4)
Label14.Caption = .Cells(varRow, 7)
Label15.Caption = .Cells(varRow, 8)
Label17.Caption = .Cells(varRow, 9)
Else
Label11.Caption = "nix"
Label10.Caption = "nix"
Label9.Caption = "nix"
Label14.Caption = "nix"
Label15.Caption = "nix"
Label17.Caption = "nix"
End If
End With
End Sub

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige