Anzeige
Archiv - Navigation
944to948
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
944to948
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hilfe mit Schleife - Abhängigkeit zweier Zellen

Hilfe mit Schleife - Abhängigkeit zweier Zellen
25.01.2008 10:16:44
Toni
Hallo nochmal...
ich komme mit meinem Problem leider doch nicht weiter obwohl ich dachte ich hätte es :(
das Problem ist fogendes:
In einem Arbeistblatt werden in den Zellen ("A18:V18") Werte aus einem anderen Arbeitsblatt eingefügt, nämich Mengen von bestellten Waren! Wenn mal von einer bestimmten Ware nichts bestellt wurde bleibt die entsprechende Zelle eben leer.
Durch ein weiteres Makro wird aus einer Preisliste in den Zellen darunter ("A19:V19") der entsprechende Preis eingefügt, der allerdings variieren kann
Nun soll aber kein Preis eingetragen werden, wenn in der darüber liegenden Zelle auch kein Wert eingetragen ist, also nichts bestellt wurde, weil das einfach unprofessionell wirkt!
Dieser Vorgang wiederholt sich jetzt einige male! Es werden also wieder andere Bestellungen kopiert und in die Zellen ("A27:V27") eingefügt und die entsprechenden Preise in die Spalte darunter ("A28:V28")
usw...
Mit den Bestellungen funktioniert alles nur bei den Preisen komm ich eben nicht drauf, wie das Makro eigenständig prüfen kann, ob in der Zelle darüber eben etwas steht...
Der Code für das Einfügen der Preise geht im Moment so:

Sub Rechnung_W_Preise()
'Kopier- und Einfügecode
With Worksheets("pliste")
.Activate
'Bereich 1
.Range("B73:W73").Copy
Sheets("Rechnung_W").Range("A19").PasteSpecial Paste:=xlPasteValues
'Bereich 2
.Range("B66:W66").Copy
Sheets("Rechnung_W").Range("A28").PasteSpecial Paste:=xlPasteValues
'Bereich 3
.Range("B80:W80").Copy
Sheets("Rechnung_W").Range("A37").PasteSpecial Paste:=xlPasteValues
'etc...
End With
End Sub


Ich hatte schon von INgolf folgenden Ansatz bekommen:


Sub Rechnung_W_Preise()
Dim rng As Range
For Each rng In Sheets("Rechnung_G").Range("A18:V18")
If rng > 0 Then
.Range("B73:W73").Copy
Sheets("Rechnung_G").Cells(19, rng.Column).PasteSpecial Paste:=xlPasteValues
End If
Next 'rng
End Sub


irgendwie trägt das Makro aber immernoch alle kopierten Preise ein, auch wenn darüber kein Wert steht!
Außerdem weiß ich nicht wie ich die Schleife erweitere, um auf den nächsten Bereich überzugehen...
Bin eben noch ziemlich am Anfang mit meinen VBA Kentnissen!
Ich bin also weiterhin für jeden Tip dankbar
Gruß, Toni

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

Betreff
Datum
Anwender
Anzeige
Crossposting www.Office-loesung.de
25.01.2008 10:52:00
Jan3
Hi Tina oder Toni?
In zwei Foren das gleich Thema zu posten, wird nicht gerne gesehen.
Eine Beispielmappe ist auf jedem Fall notwendig.
Jan

AW: Crossposting www.Office-loesung.de
25.01.2008 11:23:46
Toni
Servus Jan!
Naja Tina ist meine Kollogen... sie ist ganz absichtlich in einem anderen Forum auf der Suche nach Hilfe... wir vertreten einen kranken Kollegen und haben einfach wenig Ahnung von der Materie... das ist unserem Chef aber egal... nun ja
wir haben hier kein Winzip auf der Arbeit und ich kann auch nichts installieren!
Also habe ich mal einen Screenshot gemacht von dem entsprechenden Arbeitsblatt! Da müsste mein Problem zu erkennen sein! Ich msuste einige Sachen schwärzen...
Aber zu erkennen ist dort deutlich, dass in allen Feldern Preise eingetragen sind und nur in einigen eine Bestellung! Der Preis soll nun mit VBA aus den Zellen verschwinden bzw gar nicht erst eingetragen werden in denen in der Zele darüber auch keine Bestellung zu finden ist...
Userbild
Gruß Toni

Anzeige
AW: Crossposting www.Office-loesung.de
25.01.2008 11:47:04
Rudi
Hallo,
setz doch einfach per bedingter Formatierung die Schriftfarbe auf weiß, falls drüber nichts steht.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Crossposting www.Office-loesung.de
25.01.2008 11:51:00
Jan3
Hi Toni,
Ungetestet entsprechend Deinem Beispiel mal eine Variante. Teste diesen Code mal an einer Kopie Deiner Orginaldatei.
  • 
    Sub Rechnung_W_Preise1()
    Dim wks As Worksheet
    Set wks = Worksheets("pliste")
    Application.ScreenUpdating = False
    Dim wks1 As Worksheet
    Set wks1 = Worksheets("Rechnung_W")
    spaltenende = 23
    zeile = 19
    For spalte = 1 To spaltenende
    If wks1.Cells(zeile - 1, spalte) > 0 Then
    wks1.Cells(zeile, spalte) = wks.Cells(73, spalte + 1)
    End If
    Next spalte
    spaltenende = 23
    zeile = 28
    For spalte = 1 To spaltenende
    If wks1.Cells(zeile - 1, spalte) > 0 Then
    wks1.Cells(zeile, spalte) = wks.Cells(66, spalte + 1)
    End If
    Next spalte
    spaltenende = 23
    zeile = 37
    For spalte = 1 To spaltenende
    If wks1.Cells(zeile - 1, spalte) > 0 Then
    wks1.Cells(zeile, spalte) = wks.Cells(80, spalte + 1)
    End If
    Next spalte
    Application.ScreenUpdating = True
    End Sub
    



  • Jan

    Anzeige
    AW: Crossposting www.Office-loesung.de
    25.01.2008 12:12:00
    Toni
    Hallo Jan, hallo Rudi!
    Vielen Danke für eure Antworten!
    @ Jan
    Dein Code funktioniert leider noch nicht richtig, er beschwert sich, dass "Spaltenende" und "Zeile" nicht definiert sind... muss ich da noch was speziell eingeben? Sorry für meine Ahnungslosigkeit...
    Folgende Stelle ist aber glaube ich genau dass, was ich gesucht habe, also der Bezug zu der darüber liegenden Zelle!! Das müsste ja ansich echt so funktionieren!! Ich bekomme langsam wieder Hoffnung :)
    
    Sub Rechnung_W_Preise1()
    If wks1.Cells(Zeile - 1, spalte) > 0 Then
    wks1.Cells(Zeile, spalte) = wks.Cells(73, spalte + 1)
    End Sub
    


    @ Rudi
    Das mit der Schriftfarbe wär natürlich ne sehr einfache Lösung, aber das Problem ist, dass die Zellen ja jedesmal durch ein Makro überschrieben werden... kann ich die Schriftfarbe denn noch wo anders formatieren außer in der Zelle selbst...?
    Es wird ja zuerst ein Wert durch das MAkro eingetragen und danach soll geprüft werden, ob die Zelle darüber auch einen Wert enthält oder nicht...
    Gruß, Toni

    Anzeige
    AW: Crossposting www.Office-loesung.de
    25.01.2008 12:22:00
    Rudi
    Hallo,
    
    kann ich die Schriftfarbe denn noch wo anders formatieren außer in der Zelle selbst...?
    


    Ich hab doch geschrieben: per bedingter Formatierung. Format-Bedingte Formatierung.
    Gruß
    Rudi
    Eine Kuh macht Muh, viele Kühe machen Mühe

    AW: Crossposting www.Office-loesung.de
    25.01.2008 12:25:00
    Jan3
    Hi Toni,
    In dem Modul ist Option Explicit eingestellt? Dann habe ich wahrscheinlich die Variablendeklaration nicht vollständig vorgenommen!
    Dann ersetzt mal den Code durch nachfolgenden.
    
    Sub Rechnung_W_Preise1()
    Dim spaltenende As Long
    Dim zeile As Long
    Dim wks As Worksheet
    Set wks = Worksheets("pliste")
    Application.ScreenUpdating = False
    Dim wks1 As Worksheet
    Set wks1 = Worksheets("Rechnung_W")
    spaltenende = 23
    zeile = 19
    For spalte = 1 To spaltenende
    If wks1.Cells(zeile - 1, spalte) > 0 Then
    wks1.Cells(zeile, spalte) = wks.Cells(73, spalte + 1)
    End If
    Next spalte
    spaltenende = 23
    zeile = 28
    For spalte = 1 To spaltenende
    If wks1.Cells(zeile - 1, spalte) > 0 Then
    wks1.Cells(zeile, spalte) = wks.Cells(66, spalte + 1)
    End If
    Next spalte
    spaltenende = 23
    zeile = 37
    For spalte = 1 To spaltenende
    If wks1.Cells(zeile - 1, spalte) > 0 Then
    wks1.Cells(zeile, spalte) = wks.Cells(80, spalte + 1)
    End If
    Next spalte
    Application.ScreenUpdating = True
    End Sub
    


    Jan

    Anzeige
    AW: Crossposting www.Office-loesung.de
    25.01.2008 13:21:00
    Toni
    @ Jan
    Dank dir nochmal für deine Mühe! Leider kenne ich mich mit VBA so wenig aus, dass ich keine Änderungen an deinem Makro vornehmen kann ohne dass eine Katastrophe geschieht... :)
    Spalte habe ich jetzt einfach mal als Variant definiert... damit hat es funktioniert jedoch hängt es sich bei der ersten If Abfrage auf und wiederholt diese ständig...
    @ Rudi
    Ich finde bei der bedingten Formatierung keinen Bezug auf die Zelle darüber... kannst du mir das vielleicht nochmal genauer erklären?
    Vielan Dank euch Zwei nochmal für die UNterstützung!
    Toni

    AW: Crossposting www.Office-loesung.de
    25.01.2008 13:44:00
    Rudi
    Hallo,
    z.B. für C5: Formel ist: =C4=0
    Gruß
    Rudi
    Eine Kuh macht Muh, viele Kühe machen Mühe

    Anzeige
    AW: Crossposting www.Office-loesung.de
    25.01.2008 14:26:00
    Jan3
    Hi,
    Anbei habe ich mal mein VBA-Code mit einer Beispielmappe getestet und es funktioniert. Was ist Deiner Mappe anders?
    https://www.herber.de/bbs/user/49369.xls
    Jan

    AW: Crossposting www.Office-loesung.de
    25.01.2008 14:59:00
    Toni
    Servus Jan!
    Hey 1000 Dank für deine Beispielmappe!!! Habe es mal mit deiner Mappe probiert und es funktioniert!!
    Ich habe bei mir "option Expicit" weggenommen und das Makro mal ohne diese Schritt für Schritt Funktion mit F8 im Editor gestartet und nun funktioniert es wirklich!!!!
    Hast uns hier echt weitergehlfen und den bis lang so erfolglosen Tag gerettet !!!!
    Also nochmal herzlichen Dank für deine Zeit und lieben Gruß !!
    Toni

    Anzeige
    Danke für das Feedback!
    25.01.2008 15:04:00
    Jan3
    ow

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige