Thema Datum  Von Nutzer Rating
Antwort
27.11.2008 12:08:25 adrian
NotSolved
28.11.2008 08:48:01 Holger
NotSolved
Rot Aw:Aw:Zellen in einer Spalte auf Inhalt prüfen & l
28.11.2008 11:41:14 adrian
NotSolved
28.11.2008 11:45:54 adrian
NotSolved
28.11.2008 11:56:04 adrian
NotSolved

Ansicht des Beitrags:
Von:
adrian
Datum:
28.11.2008 11:41:14
Views:
1061
Rating: Antwort:
  Ja
Thema:
Aw:Aw:Zellen in einer Spalte auf Inhalt prüfen & l
Hi Holger,
damit suche ich nur die letzte Spalte in der ein Wert (Name) steht.
Dann lass ich ich in jede Spalte unterhalb der SuchZeile von Spalte1 bis SpalteL fünf Werte aus anderen Sheets eintragen. Das sind Zahlenwerte. In der 4. Zeile unterhalb wird nichts eingetragen.
Wenn ich in den Sheets "Namen" lösche ändert sich der Bereich in der SuchZeile. Die Werte unterhalb einer Spalte ohne "Name" in Suchzeile werden mit diesem Code nicht berücksichtigt und somit auch nicht gelöscht.
folgender Code:

Dim Datenblatt As Worksheet, Spalte As Long
Dim Zeile As Long, SpalteL As Long, SpalteR As range, Found As range, varSupplier, Bereich As String
Set Found = Nothing
Zeile = 70 'Zeile mit den Suppliernamen im Hauptdatenblatt
Const Spalte1 As Long = 18 'Spalte,die die erste Spalte in Zeile 70 mit Suppliername ist!
Set Datenblatt = Worksheets("Overview")
With Datenblatt
'Letzte Spalte mit Supplier in Zeile 70 ermitteln
SpalteL = .Cells(Zeile, .Columns.count).End(xlToLeft).Column
'Spalten mit Suppliernamen abarbeiten
For Spalte = Spalte1 To SpalteL
'3. Zellen unterhalb Suppliername: Inhalte löschen
.range(.Cells(Zeile + 1, Spalte), .Cells(Zeile + 5, Spalte)).ClearContents
'Suppliername für Suche merken
varSupplier = .Cells(Zeile, Spalte).Value
'Supplier in den 3 Blättern im benamten bereich suchen
'Wert aus Spalte links von gefundener Zelle in Zeile 71 eintragen
Call SubSuchen(rngBereich:=Worksheets("Philips (A)").range("SupplierAs"), _
varSuchen:=varSupplier, wks:=Datenblatt, ZielZeile:=Zeile + 1, ZielSpalte:=Spalte)
'Wert aus Spalte links von gefundener Zelle in Zeile 72 eintragen
Call SubSuchen(rngBereich:=Worksheets("Philips (EU)").range("SupplierEU"), _
varSuchen:=varSupplier, wks:=Datenblatt, ZielZeile:=Zeile + 2, ZielSpalte:=Spalte)
'Wert aus Spalte links von gefundener Zelle in Zeile 73 eintragen
Call SubSuchen(rngBereich:=Worksheets("Philips (US)").range("SupplierUS"), _
varSuchen:=varSupplier, wks:=Datenblatt, ZielZeile:=Zeile + 3, ZielSpalte:=Spalte)

.Cells(Zeile + 5, Spalte).Value = .Cells(Zeile + 1, Spalte).Value + _
.Cells(Zeile + 2, Spalte).Value + .Cells(Zeile + 3, Spalte).Value
Next


Hab ein bisschen hierran gebastelt, aber funzt immer noch nicht ganz =(
wo er meckert, untermal ich mal "fett"

lg
adrian

Holger schrieb am 28.11.2008 08:48:01:

Hallo Adrian,
wenn ich dich recht verstanden habe, ermittelt du mit
"SpalteL = .Cells(Zeile, .Columns.count).End(xlToLeft).Column"
die letzte Spalte, in der in den relevanten 5 Zeilen etwas steht. Machst du das für alle 5 Zeilen und ermittelst das Maximum oder sind immer alle 5 Zeilen gefüllt, so dass das Maximum bereits nach einer Bestimmung feststeht?
Wenn du aber das Maximum bestimmt hast, können in den rechts von der letzten Spalte stehenden Spalten keine Werte mehr stehen. Wozu also der Aufwand?
Gruß
Holger

adrian schrieb am 27.11.2008 12:08:25:

Hallo,
ich bin noch Anfänger in VBA und würde mich freuen wenn mir hierbei jemand helfen kann!

Es werden jeweils 5 Werte in einer Spalte unterhalb einer bestimmten Zeile eingetragen.
Das gilt für:
For Spalte = Spalte1 To SpalteL
Die Anzahl der Spalten kann variieren und die letzte wird mittels "SpalteL = .Cells(Zeile, .Columns.count).End(xlToLeft).Column" ermittelt.

folgendes möchte ich nun machen, aber es funktioniert leider nicht:

Falls in den 5 Zeilen der SpalteL+1 Werte sind, alle 5 löschen und schauen ob in den Zeilen der SpalteL+2 ebenfalls werte stehen, ggf. löschen, usw.!

hier mein Code, aber er funktioniert leider nicht, weil ich nicht weiß, wie ich diese 5Zeilen in der SpalteR (=SpalteL+zähler) als Bereich/Range Speichern soll...oder ob es so überhaupt möglich ist.

With Datenblatt
Set SpalteR = .range(.Cells(Zeile + 1, SpalteL + 1), .Cells(Zeile + 1, SpalteL + 1))
Set Found = SpalteR.Find(what:=Cells.Value, LookIn:=xlValues, Lookat:=xlWhole)
While Not Found Is Nothing
SpalteR.ClearContents
Set SpalteR = SpalteR.Offset(0, 1)
Set Found = SpalteR.Find(what:=Cells.Value, LookIn:=xlValues, Lookat:=xlWhole)
Wend
End With

lg
adrian

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
27.11.2008 12:08:25 adrian
NotSolved
28.11.2008 08:48:01 Holger
NotSolved
Rot Aw:Aw:Zellen in einer Spalte auf Inhalt prüfen & l
28.11.2008 11:41:14 adrian
NotSolved
28.11.2008 11:45:54 adrian
NotSolved
28.11.2008 11:56:04 adrian
NotSolved