Registriert seit: 08.11.2015
Version(en): 2007/2013
08.11.2015, 16:11
(Dieser Beitrag wurde zuletzt bearbeitet: 08.11.2015, 17:50 von Rabe.
Bearbeitungsgrund: Code mit Tags formatiert
)
Hallo zusammen, und zwar würde ich gerne Excel Zeilen dynamisch auslesen, jedoch bekomm ich das irgendwie nicht hin und meine google suchen waren auch eher erfolglos Ich möchte später mal aus einer Tabelle nach z.b. Emea filtern und mir dazu dann alle aufgelisteten Produkte anzeigen lassen. Ich hatte mir das so vorgestellt, dass ich die Produkte dann immer in ein Array speichere und dann vergleiche ob es schon aufgelistet ist oder nicht. Da die Tabelle jedoch immer wieder erweitert wird, kann ich keinen festen Bereich definieren und möchte aufhören sobald ich auf eine leere Zeile stoße. Ich hab mir dazu auch mal ein kleines Beispiel gebastelt, jedoch bekomm ich es einfach nicht hin den suchbereich zu parametrisieren bzw. weiß nicht wieso er meine Variable nicht benützt :( Da ich mit VBA noch nicht so erfahren bin, dachte ich mir frag ich hier mal nach Das hier wäre mein Code: Code: Sub summieren()
Dim Zähler As Integer Dim Summe As Integer Dim x As Integer
Zähler = 1 Do If Cells(1, Zähler).Value = 0 Then Cells(1, 24) = "Wir sind fertig" Exit Do Else Zähler = Zähler + 1 x = Cells(1, Zähler).Value Summe = Summe + x End If Loop
'x = Cells(1, 1).Value 'Cells(1, 24).Value = x
End Sub
Aber irgendwie scheint er den Zähler nicht wirklich zu benutzen :( Hättet ihr mir einen Tipp? Vielen Dank schonmal mfg Bärenmarke
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
Moin,
dir ist schon klar, dass du dich spaltenweise (Zähler) durcharbeitest und nicht zeilenweise? Die VBA-Hilfe ist gar nicht einmal so schlecht ...
Beste Grüße Günther
Excel-ist-sexy.de …schau doch mal rein! Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 08.11.2015
Version(en): 2007/2013
(08.11.2015, 18:09)GMG-CC schrieb: Moin,
dir ist schon klar, dass du dich spaltenweise (Zähler) durcharbeitest und nicht zeilenweise? Die VBA-Hilfe ist gar nicht einmal so schlecht ... Au sorry, da hab ich mich wohl schlecht ausgedrückt :( Ich meinte natürlich die Spalte runter, also Z.b. Spalte a, Zelle für Zelle. Also ich hab schon intensiv gegoogelt gefühlt tausend verschiedene Möglichkeiten gefunden, Werte aus einer Zelle auszulesen, aber geholfen hat mir nichts.
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
(08.11.2015, 18:31)Bärenmarke schrieb: Au sorry, da hab ich mich wohl schlecht ausgedrückt :( Im Beitrag war alles richtig! Du hast dich in der VBA-Anweisung "falsch ausgedrückt" ... Die korrekte Syntax lautet: Cells( Zeile, Spalte) Du schreibst aber: Code: x = Cells(1, Zähler).Value
also: Cells( Zeile1, NeuHochgezählteSpalte). Wenn du also Spalte_A durchsuchen willst: Code: x = Cells(Zähler, 1).Value
Und wenn du im VBA-Editor auf Cells klickst ind dann [F1] landest du auch im Internet bei Microsofts Hilfe zu genau diesem Stichwort. Das spart mitunter viel Zeit und ich nutze diese Möglichkeit auch noch recht oft. Was dich aber nicht am fragen hindern soll .
Beste Grüße Günther
Excel-ist-sexy.de …schau doch mal rein! Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 08.11.2015
Version(en): 2007/2013
(08.11.2015, 18:55)GMG-CC schrieb: Und wenn du im VBA-Editor auf Cells klickst ind dann [F1] landest du auch im Internet bei Microsofts Hilfe zu genau diesem Stichwort. Das spart mitunter viel Zeit und ich nutze diese Möglichkeit auch noch recht oft. Was dich aber nicht am fragen hindern soll . Super danke dir! Jetzt funktioniert es, das nächste mal versuche ich mein Glück mal mit F1, hatte bis jetzt nur nicht so tolle Erfahrungen mit den Hilfen gemacht und immer lieber google bemüht Dann werde ich morgen mal versuchen meine Funktionen Stück für Stück zu erweitern.
Registriert seit: 08.11.2015
Version(en): 2007/2013
Ich konnte jetzt weiterarbeiten, danke nochmal für deine Hilfe Jedoch bin ich jetzt an einem weiteren Problem angelangt, was mich verzweifeln lässt. Und zwar bin ich dabei ein Array zu befüllen und mir die Werte ausgeben zu lassen doch er bringt mir ständig: Fehler beim Kompilieren: End If ohne If-Block Ich bin meinen Code jetzt gefühlt tausendmal durchgegangen und ich weiß nicht wieso er meckert, jedes If wird von einem End-If geschlossen... Kann der Fehler auch etwas anderes sein und er gibt mir halt diesen nichtssagenden Fehler aus? Hier mal mein Quellcode: Code: Sub summieren()
Dim Zähler As Integer Dim Summe As Integer Dim x As Integer Dim Products(3) As String Dim Product As String Dim Arrayzähler As Integer Dim i As Long Dim Gefunden As Boolean
Zähler = 1 Do 'Gefunden = False Arrayzähler = -1 If Cells(Zähler, 1).Value = 0 Then Cells(26, 1) = "Wir sind fertig" Exit Do End If If Cells(Zähler, 1).Value = "EMEA" Then x = Cells(Zähler, 2).Value Summe = Summe + x Product = Cells(Zähler, 3).Value For i = 0 To UBound(Products) If Products(i) = Product Then Gefunden = True Exit For Else Gefunden = False Exit For End If If Gefunden = False Then If Products(Arrayzähler + 1) = "" Then Products(Arrayzähler + 1) = Product Cells(24, 5 + Arrayzähler).Value = Product If Products(Arrayzähler + 1) <> "" Then Arrayzähler = Arrayzähler + 1 If Products(Arrayzähler + 1) = "" Then Products(Arrayzähler + 1) = Product Cells(24, 5 + Arrayzähler).Value = Product If Products(Arrayzähler + 1) <> "" Then Arrayzähler = Arrayzähler + 1 If Products(Arrayzähler + 1) = "" Then Products(Arrayzähler + 1) = Product Cells(24, 5 + Arrayzähler).Value = Product If Products(Arrayzähler + 1) <> "" Then Arrayzähler = Arrayzähler + 1 If Products(Arrayzähler + 1) = "" Then Products(Arrayzähler + 1) = Product Cells(24, 5 + Arrayzähler).Value = Product End If End If End If End If End If End If End If End If End If Zähler = Zähler + 1 Loop
Cells(24, 2).Value = Summe
End Sub
Wäre super, wenn ihr mir einen Hinweis geben könntet :)
Registriert seit: 10.04.2014
Version(en): 2016 + 365
09.11.2015, 15:38
(Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2015, 15:43 von Rabe.)
(09.11.2015, 15:19)Bärenmarke schrieb: Fehler beim Kompilieren: End If ohne If-Block
Ich bin meinen Code jetzt gefühlt tausendmal durchgegangen und ich weiß nicht wieso er meckert, jedes If wird von einem End-If geschlossen... Kann der Fehler auch etwas anderes sein und er gibt mir halt diesen nichtssagenden Fehler aus? [...] Wäre super, wenn ihr mir einen Hinweis geben könntet :) Das ist doch nicht nichtssagend, Excel sagt es Dir doch genau: Du hast ein "End If" zu viel, aber Du hast auch definitiv ein "Next" zu wenig. Wenn das letzte "End If" gelöscht ist, kommt der umgedrehte Fehler: If ohne End If Wenn das fehlende Next eingefügt ist, dann tut es. Sub summieren() Dim Zähler As Integer Dim Summe As Integer Dim x As Integer Dim Products(3) As String Dim Product As String Dim Arrayzähler As Integer Dim i As Long Dim Gefunden As Boolean Zähler = 1 Do 'Gefunden = False Arrayzähler = -1 If Cells(Zähler, 1).Value = 0 Then Cells(26, 1) = "Wir sind fertig" Exit Do End If If Cells(Zähler, 1).Value = "EMEA" Then x = Cells(Zähler, 2).Value Summe = Summe + x Product = Cells(Zähler, 3).Value For i = 0 To Ubound(Products) If Products(i) = Product Then Gefunden = True Exit For Else Gefunden = False Exit For End If Next i If Gefunden = False Then If Products(Arrayzähler + 1) = "" Then Products(Arrayzähler + 1) = Product Cells(24, 5 + Arrayzähler).Value = Product If Products(Arrayzähler + 1) <> "" Then Arrayzähler = Arrayzähler + 1 If Products(Arrayzähler + 1) = "" Then Products(Arrayzähler + 1) = Product Cells(24, 5 + Arrayzähler).Value = Product If Products(Arrayzähler + 1) <> "" Then Arrayzähler = Arrayzähler + 1 If Products(Arrayzähler + 1) = "" Then Products(Arrayzähler + 1) = Product Cells(24, 5 + Arrayzähler).Value = Product If Products(Arrayzähler + 1) <> "" Then Arrayzähler = Arrayzähler + 1 If Products(Arrayzähler + 1) = "" Then Products(Arrayzähler + 1) = Product Cells(24, 5 + Arrayzähler).Value = Product End If End If End If End If End If End If End If End If End If Zähler = Zähler + 1 Loop Cells(24, 2).Value = Summe End Sub
VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0 Dieser Bereich geht bestimmt einfacher: If Gefunden = False Then
If Products(Arrayzähler + 1) = "" Then
Products(Arrayzähler + 1) = Product
Cells(24, 5 + Arrayzähler).Value = Product
If Products(Arrayzähler + 1) <> "" Then
Arrayzähler = Arrayzähler + 1
If Products(Arrayzähler + 1) = "" Then
Products(Arrayzähler + 1) = Product
Cells(24, 5 + Arrayzähler).Value = Product
If Products(Arrayzähler + 1) <> "" Then
Arrayzähler = Arrayzähler + 1
If Products(Arrayzähler + 1) = "" Then
Products(Arrayzähler + 1) = Product
Cells(24, 5 + Arrayzähler).Value = Product
If Products(Arrayzähler + 1) <> "" Then
Arrayzähler = Arrayzähler + 1
If Products(Arrayzähler + 1) = "" Then
Products(Arrayzähler + 1) = Product
Cells(24, 5 + Arrayzähler).Value = Product
End If
End If
End If
End If
End If
End If
End If
End If
VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
09.11.2015, 15:50
(Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2015, 15:52 von GMG-CC.)
[Gelöscht]
Beste Grüße Günther
Excel-ist-sexy.de …schau doch mal rein! Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 08.11.2015
Version(en): 2007/2013
Erstmal vielen Dank euch beiden Das Problem ist, wenn ich ein end If raus lösche sagt er mir Do ohne Loop und das kann definitiv nicht sein Deswegen dachte ich, das Problem ist etwas anderes. Aber was meinst du mit dem Next? Stehe da gerade auf dem Schlauch :O Notepad ++ nutze ich schon, habe es mir auch aus sichtbarkeitsgründen dort hineinkopiert da ich in dem Modul mit dem Nachzählen fast verrückt geworden bin :20: Funktioniert es bei euch etwa, wenn ihr ein End if herauslöscht?
Registriert seit: 10.04.2014
Version(en): 2016 + 365
09.11.2015, 15:59
(Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2015, 16:13 von Rabe.)
(09.11.2015, 15:55)Bärenmarke schrieb: Deswegen dachte ich, das Problem ist etwas anderes. Aber was meinst du mit dem Next? Stehe da gerade auf dem Schlauch :O zum einen: Eine For-Schleife benötigt immer ein schließendes Next, genau wie ein With ein End With oder ein If ein End If oder ein Do ein Loop oder ein While ein Until oder ... zum zweiten: In dem von mir geposteten Code ist das "Next i" an der richtigen Stelle, der Code müßte funktionieren. Die verschachtelten If-Teile verstehe ich gar nicht, was soll da passieren? Warum sind das so viele und warum verschachtelt? Warum nicht mit Else? Hier mal mit Else und zusammengefasst, teste mal, ob das das gleiche macht: Do 'Gefunden = False Arrayzähler = -1 If Cells(Zähler, 1).Value = 0 Then Cells(26, 1) = "Wir sind fertig" Exit Do End If If Cells(Zähler, 1).Value = "EMEA" Then x = Cells(Zähler, 2).Value Summe = Summe + x Product = Cells(Zähler, 3).Value For i = 0 To Ubound(Products) If Products(i) = Product Then Gefunden = True Exit For Else Gefunden = False Exit For End If Next i If Gefunden = False Then If Products(Arrayzähler + 1) = "" Then Products(Arrayzähler + 1) = Product Cells(24, 5 + Arrayzähler).Value = Product Else Arrayzähler = Arrayzähler + 1 End If If Products(Arrayzähler + 1) = "" Then Products(Arrayzähler + 1) = Product Cells(24, 5 + Arrayzähler).Value = Product Else Arrayzähler = Arrayzähler + 1 End If If Products(Arrayzähler + 1) = "" Then Products(Arrayzähler + 1) = Product Cells(24, 5 + Arrayzähler).Value = Product Else Arrayzähler = Arrayzähler + 1 End If If Products(Arrayzähler + 1) = "" Then Products(Arrayzähler + 1) = Product Cells(24, 5 + Arrayzähler).Value = Product End If Zähler = Zähler + 1 End If End If Loop
VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0
|