Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
644to648
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
644to648
644to648
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Summenprodukt mit VBA

Summenprodukt mit VBA
03.08.2005 16:33:55
Korl
Hallo,
ich brauche eine Bedingung in meinem VBA-Code die dem Summenprodukt entspricht.
Tabelle1
 ABCDEF
1Mai2005  Mai2005
2Mai2005    
3Mai2005  schon vorhanden 
4Mai2005    
5Mai2005    
6Mai2005    
7Mai2005    
Formeln der Tabelle
E3 : =WENN(SUMMENPRODUKT((A1:A100=$E$1)*(B1:B100=$F$1))>0;"schon vorhanden";100)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Dies ist mein Test-Code:
Option Explicit
Sub test() Dim WksD As Worksheet Dim bereich1 As Range Dim bereich2 As Range Dim i As String Dim z As String Set WksD = Worksheets(1) Set bereich1 = WksD.Range("A1:A100") Set bereich2 = WksD.Range("B1:B100") i = WksD.Range("e1") z = WksD.Range("f1") If WorksheetFunction.SumProduct((bereich1 = i) * (bereich2 = z)).Value > 0 Then _ MsgBox ("Der Wert ist schon vorhanden!") Exit Sub End Sub
Der Debugger sagt "SumProduct" ist ein ungültiger Bezeichner.
Kann mir hier jemand auf die Sprünge helfen?
Gruß Korl

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

Betreff
Datum
Anwender
Anzeige
AW: Summenprodukt mit VBA
03.08.2005 17:00:16
Fred
Hi,
lass das .Value weg.
mfg Fred
Ein Hinweis...
03.08.2005 17:06:47
RolfK
Hallo Korl,
da es sich bei Deinem Problem um eine Funktion handelt muss das .Value am Ende weg, dann geht es. Aber in meinem Test habe ich noch einen Fehler 13, was immer das auch sein mag.
Rolf
AW: Ein Hinweis...
03.08.2005 17:16:12
Korl
Hallo Fred und Rolf,
danke erstmal für Eure Mühe.
Den Fehler 13 "Typen unverträglich" habe ich leider auch drin.
Vielleicht weiß doch noch jemand Rat?
Gruß Korl
AW: Ein Hinweis...
03.08.2005 18:54:11
MichaV
Hallo,
ohne zu testen:
SumProduct((bereich1: = i) * (bereich2 := z)) oder gleich SumProduct((i) * (z))
Gruß- Micha
PS: Rückmeldung wäre nett.
AW: Ein Hinweis...
03.08.2005 20:22:13
Korl
Hallo Micha,
danke auch Dir für Deine Bereitschaft.
Bei der ersten Variante kommt schon gleich die Fehlermeldung "Fehler beim Kompilieren: Erwartet:)"
Bei der kurzen Variante erscheint bei Ausführung "Typen unverträglich"
Ich habe auch weiter experimentiert aber ...
Gruß Korl
Anzeige
AW: Ein Hinweis...
03.08.2005 20:34:50
MichaV
Hallo Korl,
ich hab mal kurz in die Hilfe geschaut.
application.WorksheetFunction.SumProduct(i,z) sollte es dann sein.
Gruß- Micha
PS: Rückmeldung wäre nett.
AW: Ein Hinweis...
03.08.2005 22:17:08
Korl
Hallo Micha,
ich bekomme es immer noch nicht hin. Habe auch in Hilfe geschaut und versucht meinen Code entsprechend anzupassen aber...
Mein Code sieht im Moment wie folgt aus:
Option Explicit
Sub test() Dim myrange1 As Range Dim myrange2 As Range Dim myrange3 As Range Dim myrange4 As Range Dim i As String Dim z As String Set myrange1 = Worksheets("Tabelle1").Range("A1:A65536") Set myrange2 = Worksheets("Tabelle1").Range("B1:B65536") Set myrange3 = Worksheets("Tabelle1").Range("E1") Set myrange4 = Worksheets("Tabelle1").Range("F1") i = myrange3 z = myrange4 If Application.WorksheetFunction.SumProduct(i, z) > 0 Then MsgBox ("Der Wert ist schon vorhanden!") Exit Sub End If End Sub
Danach Laufzeitfehler '1004': Die SumProduct-Eigenschaft des WorksheetFunktion-Objektes kann nicht zugeordnet werden.
Was mache ich noch falsch.
Gruß Korl
Anzeige
AW: Ein Hinweis...
04.08.2005 14:33:54
MichaV
Hallo Korl,
SumProduct benötig Argumente vom Typ Range. Du weist i und z einem String zu, damit kann Sumproduct nix anfangen. Schreibe
If Application.WorksheetFunction.SumProduct(myrange3, myrange4) &gt 0
oder schreibe
Dim i as Range
Dim z as Range
...
Set i = myrange3
Set z = myrange4
..das ist dann aber doppelt gemoppelt. Auf jeden Fall muß in SumProduct ein Range stehen.
Gruss- Micha
PS: Rückmeldung wäre nett.
AW: Ein Hinweis...
04.08.2005 16:27:56
Korl
Hallo Micha,
nochmal eine Dankeschön für Deine Hilfestellung aber ich bekomme es immer noch nicht am laufen.
Weiterhin habe ich die Meldung:Laufzeitfehler '1004': Die SumProduct-Eigenschaft des WorksheetFunktion-Objektes kann nicht zugeordnet werden.
Ich möchte Dir doch nochmal die Aufgabe als Excelfunktion zeigen:
Tabelle1
 ABCDEF
1Mai2005  Januar2005
2Mai2005    
3Mai2005  mein Code 
4Mai2005    
5Mai2005    
6Mai2005    
7Mai2005    
Formeln der Tabelle
E3 : =WENN(SUMMENPRODUKT((A1:A100=$E$1)*(B1:B100=$F$1))>0;"schon vorhanden";"mein Code")
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Die Monate und Jahre sind als Text dargestellt.
Ich möchte mit dem Code erreichen das Werte von einem Monat pro Jahr nicht ausversehen doppelt in die Datenbank eingetragen werden.
In Deinem Vorschlag wird sich nur auf den Suchwert bezogen und nicht auf die dazugehörige Matrix, oder?
Gruß Korl

Anzeige
AW: Ein Hinweis...
06.08.2005 21:22:16
MichaV
Hallo Korl,
ich mach mal zu. Du findest Deine Lösung im anderen Forum.
Gruß- Micha
AW: Ein Hinweis...
07.08.2005 08:22:13
Korl
Hallo Micha,
ich danke Dir für Deine Mühe. Du kannst aber auch langsam machen ;-)
War nur im Glauben, dass Du im anderen Forum ausgelastet bist mit den Klassen.
Gruß Korl
Summenprodukt mit VBA
07.08.2005 21:07:12
Korl
Hallo,
nach langer bastelei, hier mein heimwerklicher Code:
Sub Monat_prüfen() Dim bereich1 As Range Dim bereich2 As Range Dim i As Range Dim z As Range Dim a As Long Dim b As Long Set bereich1 = Worksheets(1).Range("A1:A65536") Set bereich2 = Worksheets(1).Range("B1:B65536") Set i = Worksheets(1).Range("e1") Set z = Worksheets(1).Range("f1") a = Application.WorksheetFunction.CountIf(bereich1, i) b = Application.WorksheetFunction.CountIf(bereich2, z) If a > 0 And b > 0 Then MsgBox ("Der Monat wurde bereits eingetragen!") Exit Sub Else MsgBox ("mein Code") End If End

Sub
Gruß Korl

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige