Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
140to144
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
140to144
140to144
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formeln in Makro einbauen

Formeln in Makro einbauen
28.07.2002 17:46:44
Rolf ST
Hallo Excel Experten,
folgende 3 Formeln hätte ich gerne in unten angeführtes Makro eingebaut.
Nachfolgende Formel steht in Spalte A
=WENN(C3>0;ZÄHLENWENN(L$1:L3;L3);"")
Nachfogende Formel steht in Spalte B
=WENN(C3>0;(ZÄHLENWENN(M$1:M3;M3)&". "&I3);" ")
Nachfogende Formel steht in Spalte M
=(L3 & I3)
Die Tabelle hat eine Überschrift mit drei Zeilen und es können bis zu 1000 Werte untereinander stehen. Das Makro soll sich automatisch aktualisieren.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim var As Variant
If Target.Column <> 3 Then Exit Sub
If IsEmpty(Range("C" & Target.Row)) Then
Range("E" & Target.Row & ":M" & Target.Row).ClearContents
Exit Sub
End If
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = False
With Application
var = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 2, 0)
If Not IsError(var) Then
Target.Offset(0, 2) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 2, 0)
Target.Offset(0, 3) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 3, 0)
Target.Offset(0, 4) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 4, 0)
Target.Offset(0, 5) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 5, 0)
Target.Offset(0, 6) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 6, 0)
Target.Offset(0, 7) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 7, 0)
Target.Offset(0, 8) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 8, 0)
Target.Offset(0, 9) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 9, 0)
Else
Target.Offset(0, 2) = "?"
Target.Offset(0, 3) = "?"
Target.Offset(0, 4) = "?"
Target.Offset(0, 5) = "?"
Target.Offset(0, 6) = "?"
Target.Offset(0, 7) = "?"
Target.Offset(0, 8) = "?"
Target.Offset(0, 9) = "?"
End If
End With
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Vielen Dank für eure Hilfe!

Tschüß
Rolf

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Formeln in Makro einbauen
28.07.2002 19:20:16
Charlie
Hallo, Rolf!

Die direkte Referenzierung ist gegenüber Target.Offset wesentlich schneller, was sich bei umfangreichen Makroaktionen bemerkbar machen wird.

Viel Erfolg,
Charlie

Re: Formeln in Makro einbauen
28.07.2002 19:39:23
Nike
Hi,
was ich nicht verstehe, warum überhaupt noch die ganzen Funktionen auf`s Blatt ausgeben und nicht einfach innerhalb von
VBA die Ergebnisse errechnen und dann das fertige Ergebnis
in die Zellen ausgeben?
Bei Bedarf einfach die Berechnung neu anstossen...

Die Funktionen können ja eins zu eins innerhalb von VBA
übernommen werden, mittels WorksheetFunction...
z.B.
WorksheetFunction.CountIf
oder
WorksheetFunction.VLookup

War nur so ein Gedanke...

Bye

Nike

Anzeige
Re: Formeln in Makro einbauen
28.07.2002 20:05:45
Rolf St
Hallo Charlie,
ich habe das Makro nach deinen Vorschlägen umgebaut, habe aber wahrscheinlich noch einige Fehler eingebaut.
Wäre es auch möglich, das die Formeln nicht in das Tabellenblatt eingetragen werden sondern nur die ergebnisse?

Vielen Dank für deine Hilfe!

Tschüß
Rolf


Private Sub Worksheet_Change(ByVal Target As Range)
Dim var As Variant
Dim lngZeile As Long
If Target.Column <> 3 Then Exit Sub
If IsEmpty(Range("C" & Target.Row)) Then
Range("E" & Target.Row & ":M" & Target.Row).ClearContents
Exit Sub
End If
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = False
With Application
var = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 2, 0)
If Not IsError(var) Then
Range("E" & lngRow) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 2, 0)
Range("F" & lngRow) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 3, 0)
Range("G" & lngRow) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 4, 0)
Range("H" & lngRow) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 5, 0)
Range("I" & lngRow) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 6, 0)
Range("J" & lngRow) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 7, 0)
Range("K" & lngRow) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 8, 0)
Range("L" & lngRow) = .VLookup(Target.Value, Worksheets("Stammdaten").Columns("A:I"), 9, 0)
Else
Range("E" & lngRow) = "?"
Range("F" & lngRow) = "?"
Range("G" & lngRow) = "?"
Range("H" & lngRow) = "?"
Range("I" & lngRow) = "?"
Range("J" & lngRow) = "?"
Range("K" & lngRow) = "?"
Range("L" & lngRow) = "?"

End If
End With

Range("A" & lngRow).FormulaLocal = _
"=WENN(C" & lngRow & ">0;ZÄHLENWENN(L$1:L" & lngRow & _
";L" & lngRow & ");"""")"
Range("B" & lngRow).FormulaLocal = "=WENN(C" & lngRow & _
">0;ZÄHLENWENN(M$1:M" & lngRow & ";M" & lngRow & _
")&"". ""&I" & lngRow & ";"""")"
Range("M" & lngRow).FormulaLocal = "=(L" & lngRow & " & I" & _
lngRow & ")"

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub


Anzeige
Re: Formeln in Makro einbauen
28.07.2002 20:52:29
Charlie
Hallo, Rolf!

Zur Referenzierung anstelle von Offset - ich wollte nicht schulmeistern, aber a) es ist so schneller und b) ist der Code auch leichter lesbar. Vor allem wenn Du nach einiger Zeit wieder reinschaust, ist es einfacher, die Spalten zu sehen, als mit den Fingern die Spalten abzuzählen.

Ich habe ein paar Kleinigkeiten in Deinem ursprünglichen Code geändert (Änderungen habe ich als Kommentare beschrieben) und anstelle der Formeln werden jetzt die Ergebnisse eingetragen.

Ich hoffe, es stimmt so und Du kennst Dich aus.

Tschüß,
Charlie

Re: Formeln in Makro einbauen
28.07.2002 23:09:12
Rolf St
Hallo Charlie,
vielen Dank für die Mühe die du dir gemacht hast.

An folgender Stelle kommt noch eine Fehlermeldung und ich weiß nicht woran es liegt.

Vielleicht kannst du noch einmal schauen?

var = .VLookup(Target.Value, Worksheets("Stammdaten") & _
.Columns("A:I"), 2, 0)


Tschüß
Rolf

Anzeige
Re: Formeln in Makro einbauen
29.07.2002 01:07:57
Charlie
Hallo, Rolf!

Also, an diesem Befehl stört weder mich noch mein Excel irgendwas. Welche Fehlermeldung wird denn angezeigt?

Abgesehen davon sind mir noch ein paar Verbesserung im Code eingefallen, die poste ich Dir dann, wenn wir Deinem Excel hoffentlich das meckern abgewöhnt haben. ;)

Bis dann,
Charlie

Re: Formeln in Makro einbauen
29.07.2002 06:42:49
Rolf St
Hallo Charlie,
es kommt folgende Meldung.

Laufzeitfehler 438

Objekt unterstützt die Eigenschaft oder Methode nicht.

Vielleicht weißt du ja woran es liegt?

Tschüß
Rolf

Re: Formeln in Makro einbauen
29.07.2002 11:11:24
Charlie
Hallo, Rolf!

Was immer ich auch anstelle mit Deinem Makro, ich kann den Laufzeitfehler 438 nicht provozieren. Auch die Knowledgbase von MS macht mich nicht schlau, weil ich im Zusammenhang Laufzeitfehler 438 mit VLOOKUP nichts finden kann.

Kannst Du mir mal Deine Datei schicken? Vielleicht kann ich die Ursache dann lokalisieren.

Bis dann,
Charlie

Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige