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

Code einbinden

Code einbinden
16.10.2007 15:25:00
Tommi
Liebe Excel-Gemeinde,
Franz hat mir heute den folgenden Code gebastelt. Beim Einbinden in die Excel-Datei bin ich leider auf ein altes Problem von mir gestoßen: Wie kann ich den Code so einbinden, dass er automatisch im Hintergrund ausgeführt wird? Bislang habe ich immer auslösende Ereignisse, z.B. einen Button, benutzt. In diesem Fall muss es aber leider automatisch vonstatten gehen. Ist so etwas möglich? Hier noch einmal der Code.
Herzlichen Dank und schöne Grüße
Tommi

Sub Von1nach2()
'Überträgt die sichtbaren Datenzeilen von Blatt 1 nach Blatt 2 _
wobei keine doppelten Einträge in den Spalten übertragen werden
Dim wksQ As Worksheet, wksZ As Worksheet
Dim Zeile1 As Long, Spalte As Integer
Dim arrZeiSpa2(1 To 3, 1 To 2) As Integer
Set wksQ = Worksheets("Quelle")
Set wksZ = Worksheets("Ziel")
With wksZ
'Startzeile für Einträge im Zielblatt
Zeile2Start = 2
arrZeiSpa2(1, 1) = Zeile2Start 'Stadt
arrZeiSpa2(2, 1) = Zeile2Start 'Name
arrZeiSpa2(3, 1) = Zeile2Start 'deutsch/englisch
'Spalten für die Einträge im Blatt 2
arrZeiSpa2(1, 2) = 2 'Stadt
arrZeiSpa2(2, 2) = 3 'Name
arrZeiSpa2(3, 2) = 4 'deutsch/englisch
'vorhandene Daten löschen
.Range(.Cells(Zeile2Start, arrZeiSpa2(1, 2)), _
.Cells(.Cells.SpecialCells(xlCellTypeLastCell).Row, arrZeiSpa2(3, 2))).ClearContents
For Zeile1 = 2 To wksQ.Cells(wksQ.Rows.Count, 1).End(xlUp).Row
If wksQ.Rows(Zeile1).Hidden = False Then
'Einträge in Quellzeile abarbeiten
For Spalte = 1 To 3
'Prüfung ob Eintrag schon vorhanden
If Application.WorksheetFunction.CountIf(.Range(.Cells(Zeile2Start, _
arrZeiSpa2(Spalte, 2)), .Cells(arrZeiSpa2(Spalte, 1), arrZeiSpa2(Spalte, 2))), _
wksQ.Cells(Zeile1, Spalte).Value) = 0 Then
'Wert eintragen
.Cells(arrZeiSpa2(Spalte, 1), arrZeiSpa2(Spalte, 2)).Value = _
wksQ.Cells(Zeile1, Spalte).Value
'Zeilenzähler für Spalte in Zieltabelle erhöhen
arrZeiSpa2(Spalte, 1) = arrZeiSpa2(Spalte, 1) + 1
End If
Next
End If
Next
End With
End Sub


6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Einen Auslöser benötigt das MAKRO schon....
16.10.2007 15:40:00
NoNet
Hallo Tommi,
jedes Makro benötigt einen Auslöser, mit dem es gestartet wird. So ganz AUTOMATISCH funktioniert das nicht.
Der Auslöser muss jedoch nicht unbedingt ein Button oder Menüpunkt etc. sein, sondern es kann auch ein "Ereignis" (VBA: Event) sein.
Wenn das Makro z.B. direkt nach dem Öffnen der Mappe ausgeführt weren soll, kann man das Workbook_Open()-Event verwenden ! Kopiere dazu folgenden Code in das Klassenmodul DieseArbeitsmappe im VBA-Editor (nicht in ein Standard-Modul !!) :
Private Sub Workbook_Open()
    Von1nach2 'Hier wird das bereits vorhandene Makro "Von1nach2" aufgerufen !
End Sub

Gruß, NoNet

Anzeige
AW: Einen Auslöser benötigt das MAKRO schon....
16.10.2007 15:56:00
Tommi
Herzlichen Dank für die Antwort. Mit Workbook_Open() bzw. Workbook_Close() habe ich auch schon in der Vergangenheit herumexperimentiert. In diesem Fall soll das Makro jedoch mehr als einmal ausgeführt werden.
Bei einem Kollegen habe ich das hier einmal gesehen. Ich vermute, dass die Änderung einer Kombobox das Makro auslöst.

Private Sub cbFeatures_Change()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Search")
Call ws.Range("B9").AutoFilter(2, "Yes", , , True)
End Sub


Ich verwende auch Komboboxen. Meint Ihr, man könnte den langen Code hier irgendwie einbauen?
Herzlichen Dank und schöne Grüße
Tommi

Anzeige
AW: Einen Auslöser benötigt das MAKRO schon....
16.10.2007 16:14:47
ede
hallo tommi,
du brauchst nicht den langen code einbauen, du brauchst einfach nur die prozedur aufrufen

Private Sub cbFeatures_Change()
call Von1nach2()
End Sub


gruss

Ich kann den Code leider nicht einbauen.
16.10.2007 16:27:00
Tommi
Sorry, ich bekomme es leider nicht hin. :-( Hier noch einmal meine Beispieldatei, in die ich bereits versucht habe, den Code einzubauen. Ich habe auch eine Kombobox eingefügt, die aber leider nichts auslöst.

Die Datei https://www.herber.de/bbs/user/46805.xls wurde aus Datenschutzgründen gelöscht


Mache ich da grundsätzlich etwas falsch oder ist es vielleicht technisch gar nicht möglich?
Herzlichen Dank und schöne Grüße
Tommi

Anzeige
AW: Ich kann den Code leider nicht einbauen.
16.10.2007 16:35:00
ede
hallo nochmal,
anbei mal die korrektur, wobei ich deiner Kombobox direkt die prozedur im modul1 "Von1nach2" zugewiesen habe.
gruss
https://www.herber.de/bbs/user/46806.xls

Funktioniert wunderbar
16.10.2007 17:11:57
Tommi
Herzlichen Dank und schöne Grüße
Tommi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige