Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1652to1656
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

Warum meckert VBA hier??

Warum meckert VBA hier?
07.11.2018 11:16:01
Robert
Hallo,
Ich habe, mit Hilfe diesen Forums, einen Code zum Ausfüllen eines Protokolles erstellt. Nun bin ich momentan dabei den Code anzupassen und Excel meckert immer in einer Zeile "Fehler beim Kompilieren: Variable nicht definiert". Nach langer Suche komme ich aber bisher immer noch nicht auf den Fehler, deshalb wende ich mich nochmal an euch. Allgemeines Ziel des Codes ist, dass nach einem Klick auf einen CommandButoon entsprechende Werte aus einem Daten-Sheet rausgesucht werden und in die enstprechenden Zeilen des des Protokoll-Sheets geschrieben werden. Ich habe dabei label.Caption als Variabele verwendet, da dies ein Wert ist, der über eine Drop-Down-Auswahlliste ausgewählt wird und anschließend ein Suchkriterium darstellt.

Code:

Private Sub CommandButton2_Click()
Dim i As Byte, rngD As Range, intZeile As Integer, intTakt As Integer
With Sheets("Auswahl")
.Label1.Caption = Sheets("Auswahl").Range("C2").Value
.Label2.Caption = Sheets("Auswahl").Range("F2").Value
.Label3.Caption = Sheets("Auswahl").Range("E2").Value
.Label4.Caption = Sheets("Auswahl").Range("G2").Value
.Label5.Caption = Sheets("Auswahl").Range("H2").Value
End With
With Sheets("Daten").Range("C2:C" & Sheets("Daten").Cells(Rows.Count, 3).End(xlUp).Row)
Set rngD = .Find(what:=CDbl(Label1.Caption), Lookat:=xlWhole, LookIn:=xlValues)
If Not rngD Is Nothing Then
intZeile = rngD.Row
Else
MsgBox "Durchmesser " & Label1.Caption & " konnte bei Daten nicht gefunden werden!", vbInformation, "Meldung"
Exit Sub
End If
End With
For i = 2 To 8
intTakt = intZeile + i + 1
With Sheets("Protokoll")
.Range("A8").Value = Sheets("Daten").Cells(intTakt, 14).Value & "; Takt " & i - 2 & "; Bohrerdurchmesser " & Label1.Caption & "/" & Label3.Caption & " mit " & Label2.Caption
If Label2.Caption = "TE70 (3)" Then
.Range("C19").Value = Sheets("Daten").Cells(intTakt, 7).Value
.Range("D15").Value = Sheets("Daten").Cells(intTakt, 15).Value
.Range("C65").Value = Sheets("Daten").Cells(intTakt, 18).Value
Else
.Range("C19").Value = Sheets("Daten").Cells(intTakt, 8).Value
.Range("D15").Value = Sheets("Daten").Cells(intTakt, 15).Value
.Range("C65").Value = Sheets("Daten").Cells(intTakt, 18).Value
End If
.Range("A27").Value = Label5.Caption
.Range("H19").Value = Label1.Caption & "/" & Label3.Caption
.Range("H18").Value = Label2.Caption & " " & Label4.Caption
.Range("H11").Value = Label2.Caption & " " & Label4.Caption
.Range("D21").Value = Sheets("Daten").Cells(intTakt, 20).Value
.Range("C11").Value = Sheets("Daten").Cells(intTakt, 14).Value
.Range("C13").Value = Sheets("Daten").Cells(intTakt, 3).Value
.Range("B15").Value = Sheets("Daten").Cells(intTakt, 4).Value
.Range("H16").Value = Sheets("Daten").Cells(intTakt, 17).Value
End With
Exit For
End If
Next i
MsgBox "Protokoll wurde ausgefüllt!", vbInformation, "Meldung"
Unload Me
An der fetten Stelle ist das Problem...
Danke schonmal im vorraus,
Robert

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

Betreff
Datum
Anwender
Anzeige
AW: Warum meckert VBA hier?
07.11.2018 11:18:05
Robert
Sorry, er hat mir die ganze Formatierung vom Code zerhauen. Hoffe man versteht es trotzdem
AW: Warum meckert VBA hier?
07.11.2018 12:06:52
Peter
Hallo Robert,
lade doch mal deine Datei hoch. Dann kann ich nochmals darüber schauen.
Gruß
Peter (hpo)
AW: Warum meckert VBA hier?
07.11.2018 12:24:36
Peter
Hallo Robert,
sind die Labels auf dem Tabellenblatt"Auswahl" oder sind die Label in der Userform
wenn die Labels in der Userform stehen, dann muss der With block so sein:
With Userform1
.Label1.Caption = Sheets("Auswahl").Range("C2").Value
.Label2.Caption = Sheets("Auswahl").Range("F2").Value
.Label3.Caption = Sheets("Auswahl").Range("E2").Value
.Label4.Caption = Sheets("Auswahl").Range("G2").Value
.Label5.Caption = Sheets("Auswahl").Range("H2").Value
und nicht
With Sheets("Auswahl")
.Label1.Caption = Sheets("Auswahl").Range("C2").Value
.Label2.Caption = Sheets("Auswahl").Range("F2").Value
.Label3.Caption = Sheets("Auswahl").Range("E2").Value
.Label4.Caption = Sheets("Auswahl").Range("G2").Value
.Label5.Caption = Sheets("Auswahl").Range("H2").Value
Prüfe doch mal was danach in Label1 steht.
Viele Grüße
Peter (hpo)
Anzeige
AW: Warum meckert VBA hier?
07.11.2018 12:30:26
Matthias
Ich glaub Du liegst richtig, Peter
Sonst macht das
With Sheets("Auswahl")
.Label1.Caption = Sheets("Auswahl").Range("C2").Value
.Label2.Caption = Sheets("Auswahl").Range("F2").Value
.Label3.Caption = Sheets("Auswahl").Range("E2").Value
.Label4.Caption = Sheets("Auswahl").Range("G2").Value
.Label5.Caption = Sheets("Auswahl").Range("H2").Value
'...
nämlich keinen Sinn
Gruß Matthias
AW: Warum meckert VBA hier?
07.11.2018 13:37:26
Robert
Hallo Peter,
Ich würde gerne die Datei hochladen, leider beißt sich das jedoch mit unseren Geheimhaltungsvorschriften, so dass ich wieder eine Beispieldatei erstellen müsste. Dies ist aber aufgrund der Größe des Codes und der Datei mittlerweile seeehr aufwändig, weshalb ich gerne darauf verzichten würde. Ich gebe dir aber recht, das wäre das einfachste und du könntest mir bestimmt helfen.
Mit der 1. Lösung von damals bin ich soweit schon ganz zufrieden, ich würde aber gerne noch ein alternatives, leicht abgewandeltes Makro schreiben.
Ich hoffe du erinnerst dich noch halbwegs an die Ausgangssituation von damals. Es existieren ja insgesamt 7 Takte, und ich würde nun gerne weg von der Userform und einfach einen Commandbutton erstellen, der nach dem draufklicken den Sheet "Daten" entsprechend der Ausgewählten Kritierien durchsucht und dann Takt 0 auf Protokoll-Sheet 0 schreibt und Takt 1 auf Protokoll-Sheet 1 usw. Die Protokollsheets habe ich schon vorgefertigt und liegen alle im Reiter Protokoll, jedoch als Seitenlayout Ansicht unterteilt. Deswegen habe ich auch den With Befehl geändert, das scheint aber falsch zu sein.
Ich stelle mir das Ganze eigentlich gar nicht so schwer vor, bekomme es aber trotzdem nicht hin...
Anzeige
AW: Warum meckert VBA hier?
07.11.2018 15:20:30
Robert
Hallo Peter,
Du hast mich fast richtig verstanden und das hilft mir auch schonmal sehr weiter. Vielen Dank dafür.
Ich hätte jedoch gerne anstatt für 7 Protokolle 7 einzelne Sheets zu haben, einen Sheet "Protokoll" indem die 7 Protokolle untereinander angeordnet sind. Ich habe es mal versucht in der Beispieldatei darzustellen.
https://www.herber.de/bbs/user/125233.xlsx
Vielen Dank und Viele grüße,
Robert
Anzeige
AW: Warum meckert VBA hier?
09.11.2018 10:08:54
Jochen
Hallo Peter,
Ja genau so! Vielen Dank, du hast mir mal wieder sehr geholfen!
Viele Grüße,
Robert
AW: Warum meckert VBA hier?
07.11.2018 11:19:02
Matthias
Hallo
Was steht denn in
Sheets("Auswahl").Range("C2")?
Gruß Matthias
AW: Warum meckert VBA hier?
07.11.2018 13:44:08
Robert
@ Matthias, wie würde es Sinn machen? Ich glaube das Problem ist u.A., dass ich den Sinn von dem Ausdruck nach dem With und jeweils nach dem = noch nicht so ganz durchblickt habe. Könntest du mir das eventuell kurz erklären?
In Sheets("Auswahl").Range("C2") stehen mehrere Werkzeugdurchmesser, die über eine Drop-Down-Liste ausgewählt werden können.
Viele Grüße
Anzeige
AW: Warum meckert VBA hier?
07.11.2018 11:55:22
Daniel
Hi
ist jetzt schwer da was zu sagen, denn der Code allein ist ja nur ein Teil des Ganzen, das zusammenpassen muss.
was aber auffällig ist, dass du im ersten Teil des Codes, der ja anscheinend funktioniert, das Label mit vorangestelltem Tabellenblattbezug referenzierst (hier über die WITH-Klammer) und in der Folge dann nicht mehr.
Also würde ich, wenn der Fehler im Fett markieten Teil des Codes auftritt, zunächst mal das Label1 ebenfalls mit Tabellenblattbezug referenzieren:
...Find(what:=CDbl(Sheets("Auswahl").Label1.Caption), ...
oder du lässt den Umweg über das Label und verwendest die Zelle, die du zuvor dem Label zugewiesen hast:
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige