PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Excel Macro Hilfe



Catfish
05.12.06, 16:05
Hy,
ich suche für Excel eine gute Beschreibung, wie man Macros erstellt und die passenden Macrotexte dazu. Und auch die Erklärungen, was diese Texte bedeuten und bewirken.
Würde mich freuen von Euch zu hören.

XN00119
05.12.06, 21:57
Wenn du in das Thema einsteigen willst poste mal deine Aufgabenstellung. Anhand von Beispielen kann dir sicher weitergeholfen werden,

Fred666
06.12.06, 00:42
Video2Brain hat auch einen sehr guten Excel-Makro-Programmierungs-Kurs. Aber ich gebe den Vorrednern recht. Diese Lösungen sind alle sehr indivuell und man kann eine Menge falsch machen.

Catfish
06.12.06, 10:40
Hy Scartman! Also erst mal danke für die guten Ratschläge. VBA-Programmierung in 21 Tagen hört sich gut an. Wo finde ich den "Esel"? Ich selber habe nichts dergleichen:385:

Nun ein Beispiel: Ich habe zwei Excelfiles. Das erste ist für Eingaben und die zweite ist zur Archivierung. Wenn ich nun automatisch die Daten aus der Eingabedatei in die erste freie Zeile in der Archivierung speichern möchte funktioniert das nicht mit einfachem Aufzeichnen. Habe ich schon probiert. Das ist zu statisch. Benötige eine Lösung, die sich, wie Ihr schon sagt, individuell anpassen lässt.

Hallo Fred 666: Du hast sehr wohl recht. Man kann vieles verkehrt machen. Aber nur durch Fehler lernt man. Ich möchte einen Kurs für mich hier dahoim.

XN00119
06.12.06, 16:15
Hallo,
hier mal die Lösung deines Problems (quick and dirty)
Sub Archiv()
'
' Archiv
' Kopiert neue Daten in ein ArchivArbeitsblatt
'
'
Workbooks.Open Filename:="C:\DATEN\temp\ARCHIV.xls" 'Archivdatei öffnen
archivzeile = 2 'Startzeile wählen
CurCell = Worksheets("Tabelle1").Cells(archivzeile, 1)
Do Until VarType(CurCell) = 0 'Schleife bis leere Zeile

archivzeile = archivzeile + 1
CurCell = Worksheets("Tabelle1").Cells(archivzeile, 1)Loop
Windows("Daten.xls").Activate 'Daten aktivieren
zeile = 2 'Startzeile wählen
CurCell = Worksheets("Tabelle1").Cells(zeile, 1)
Do Until VarType(CurCell) = 0 ' Solange Zeile nicht leer

If Workbooks("Daten.xls").Worksheets("Tabelle1").Cells(zeile, 3).Value <> "ok" Then ' Wenn noch nicht archiviert

Workbooks("Archiv.xls").Worksheets("Tabelle1").Cells(archivzeile, 1).Value _
= Workbooks("Daten.xls").Worksheets("Tabelle1").Cells(zeile, 1).Value ' Daten übertragen 1 Spalte
Workbooks("Archiv.xls").Worksheets("Tabelle1").Cells(archivzeile, 2).Value _
= Workbooks("Daten.xls").Worksheets("Tabelle1").Cells(zeile, 2).Value ' Daten übertragen 1 Spalte
Workbooks("Daten.xls").Worksheets("Tabelle1").Cells(zeile, 3).Value = "ok" ' Flag für bereits archiviert setzen
archivzeile = archivzeile + 1End If
zeile = zeile + 1
CurCell = Worksheets("Tabelle1").Cells(zeile, 1)
Loop
Workbooks("Archiv.xls").Close SaveChanges:=True
End Sub

Das Excelarbeitsblatt "Daten.XLS" enthält in der ersten Zeile eine Überschrift und ab Zeile 2 Daten. In den ersten beiden Spalten stehen die Daten, die dritte Spalte wird benutzt um Archivierte Datensätze mit "ok" zu kennzeichnen. Melde dich wenn du noch Fragen hast.

Catfish
06.12.06, 17:10
Servus XN00119,
die Hilfe ist obergenial superklasse spitze.:45:

Habe nun noch ein zweites Problem. Oder besser gesagt ist es immer noch das erste. Ich habe ein Arbeitsblatt Annahme und ein Arbeitsblatt Daten in einer Datei. (Hätte ich auch gleich so schreiben können) Könntest Du mir da nochmals helfen! Die zu archivierende Spaltenanzahl ist 6.

Wie kann ich das ebensogut erlernen wie Du hier beschrieben hast?
Gibt es einen Homekurs?

XN00119
06.12.06, 18:59
Hallo,
ich habe über VBS zu VBA gefunden. Dazu habe ich ein paar Bücher über VBS gelesen aber die Excelhilfe reicht wenn dir die Grundzüge (COM) geläufig sind. Für dein Problem kannst du meine Routine einfach abändern. z.B. erste freie Zeile im Arbeitsblatt Daten suchen:
archivzeile = 2 'Startzeile wählen
CurCell = Worksheets("Daten").Cells(archivzeile, 6)
Do Until VarType(CurCell) = 0

archivzeile = archivzeile + 1
CurCell = Worksheets("Daten").Cells(archivzeile, 6)Loop
Bestimmtes Arbeitsblatt aktivieren:
Worksheets("Annahme").Activate
So nun ab zeile 2 suchen ob nicht archivierte Sätze vorhanden sind und Spalte 6 kopieren:
okFlag=10 ' Hier gewünschte Spalte für Archivflag eintragen
zeile = 2
CurCell = Worksheets("Annahme").Cells(zeile, 6)
Do Until VarType(CurCell) = 0

If Worksheets("Annahme").Cells(zeile, okFlag).Value <> "ok" Then
Worksheets("Daten").Cells(archivzeile, 6).Value = Worksheets("Annahme").Cells(zeile, 6).Value
Worksheets("Annahme").Cell s(zeile, okFlag).Value = "ok"
archivzeile = archivzeile + 1
End If
zeile = zeile + 1
CurCell = Worksheets("Annahme").Cells(zeile, 6)Loop

Hier noch ein paar Links:
http://www.dieseyer.de/dse-wsh-links.html
http://activevb.de/startseite/index.html
http://source-center.de/forum/forumdisplay.php?f=15
http://www.borncity.de/WSHBazaar/WSHBazaar.htm
http://www.visualbasic-archiv.de/home/willkommen.php3
http://www.vbapi.com/
http://www.windows-scripting.de/
http://www.w3schools.com/vbscript/default.asp

PS: über einen Danke Klick würde ich mich freuen.

Catfish
07.12.06, 19:16
Moin,
komme erst jetzt zum schreiben. Sorry, kenne die gepflogenheiten noch nicht so genau. Habe aber bereits den Klich nachgeholt. Ehre dem, dem Ehre gebührt. Sag mal auch noch so Danke und probiere es mal aus. Sollte ich nicht klar kommen, werde ich mich nochmal melden.