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

Dim-Select-Activat-Nachhilfe Unterricht

Dim-Select-Activat-Nachhilfe Unterricht
03.01.2008 14:04:58
michael

3 ist heut der dritte Tag
ob mir jemand helfen mag
zum lernen ich mich heute stelle an
denn allein ich’s leider noch nicht kann.
Herzlichen Gruß ins Forum
Ich habe 2 Dateien, in der einen werden alle Belege erfasst (im Makro die Datei – heute )
und jedem Beleg wird eine KontoNr .zugewiesen.
Von dieser Datei kopiere ich die einzelnen Zeilen
in das jeweilige Kontoblatt ( 65 Konten ) und ( 12 )Monate (im Makro die Datei – morgen)
Der ganze Kopiervorgang funktioniert einwandfrei und die
fehlende Schleife gibt es auch schon.
Meine bitte ist jetzt , kann man dieses Makro ““ Verschönern““ und
wenn ja ,bitte wie ?
Und die Dim Anweisungen notfalls Korrigieren
Danke für den Nachhilfe Unterricht.
(der kleine) michael
Option Explicit

Sub KleineVersionTest1()
Dim kontoNr As String '………………………………. 'Kontoblatt in Zieldatei'
Dim heute As String   '………………………………... 'Bank - Datei
Dim morgen As String '………………………………..  'Zieldatei Konten - Datei
Dim meizeil As Range  '……………………………...  'ActiveCell.Offset(0, -5).Range("A1:F1").Select
…………………………………………………………. 'Set meizeil = Selection  '("A1:F1")
Dim monatfind As String  '…………………………..  'Find Monat aus Heute "Bank"
Dim AnzahlZellen As Long
Dim Bereich As Range
heute = ActiveWorkbook.Name  '……………………..... 'heute Datei Bank ,usw
monatfind = ActiveSheet.Cells(2, 2)  '  '………………...zb.Jänner in Datei Bank (heute)
kontoNr = ActiveCell '………………………………..…. 'in Datei Bank zb.8000
If Selection.Interior.ColorIndex = 36 Then
MsgBox "Diese Zeile wurde schon Kopiert"
Exit 

Sub
End If
ActiveWindow.ActivateNext
morgen = ActiveWorkbook.Name  '………………….  'morgen Zieldatei Konten
If heute = morgen Then
MsgBox "Die Datei-     - ZielKonten2007.xls -       -ist--NICHT-- geöffnet ! " _
& Chr(10) & Chr(10) & "                     == Vorgang wird Abgebrochen ! == "
Exit Sub
End If
If morgen  "ZielKonten2007.xls" Then
MsgBox "Die Ziel Datei            ist Falsch   ! " _
& Chr(10) & Chr(10) & "die Bezeichnung muß  == ZielKonten2007.xls sein == Vorgang wird  _
Abgebrochen ! "
Exit Sub
End If
Sheets(kontoNr).Select  '------------------------------------------- 'KontenBlatt in Zieldatei
Set Bereich = Sheets(kontoNr).Cells.Find(What:=monatfind, After:=Range("B1"), LookIn:= _
xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=True, SearchFormat:=False).Offset(1, -1)
AnzahlZellen = Range("B:B").Find("Summe " & monatfind).Row - Bereich.Row
Bereich.Select
Windows(heute).Activate
kontoNr = ActiveCell
ActiveCell.Offset(0, -5).Range("A1:F1").Select
Set meizeil = Selection '………………………………………….. '("A1:F1")
MsgBox "Diese Zeile wird Kopiert ! "
Windows(morgen).Activate
Sheets(kontoNr).Select
meizeil.Copy
ActiveCell.PasteSpecial Paste:=xlPasteAll
MsgBox "Kopierte Zeile wurde eingefügt !"
Windows(heute).Activate
ActiveCell.Offset(0, 5).Range("A1").Select
With Selection.Interior
.ColorIndex = 36
.Pattern = xlSolid
End With
ActiveCell.Offset(1, 0).Range("A1").Select
If ActiveCell.Offset(2, 0) = "einf" Then 'Zwei Zeilen über einf !!?
ActiveCell.Offset(1, 0).Select
einfügZeilen '…………………………………………'Makro Zeile einfügen
End If
End Sub


4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dim-Select-Activat-Nachhilfe Unterricht
03.01.2008 15:02:40
Rudi
Hallo,
als erstes solltest du dir hier
http://de.wikibooks.org/wiki/VBA_in_Excel_-_Grundlagen
mal Kapitel3 (Namenskonventionen) durchlesen.
Ich halte mich auch nicht so genau dran, erhöht aber die Lesbarkeit von Code enorm.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Dim-Select-Activat-Nachhilfe Unterricht
04.01.2008 14:28:40
michael
Hallo Rudi
Danke für den Artikel - den habe ich schon gelese - und auch Kleingkeiten
gelernt,meine bitte - zwischen den Zeilen - war aber die Hoffffnung das man mir das Makro
ev. umschreibt , damit ich aus dem Unterschied und der Gegenüberstellung
meine Fehler besser erkennen kann.
(der kleine) michael

Anzeige
AW: Dim-Select-Activat-Nachhilfe Unterricht
05.01.2008 21:55:12
Herby
Hallo Michael,
ich versehe aus eigener Erfahrung deinen Wunsch. Es ist aber ein Zeitproblem. Mit dem Code allein ist es schwer alle Details bei der Performance und bei der Datensicherheit nachzuvollziehen. Einfacher ist es das ganze Problem an einer Musterdatei auszuprobieren.
Grundsätzlich ist mal jedes Programm das das richtige Resultat liefert nicht schlecht. Verbesserungsmöglichkeiten gibts aber überall. Nun zu deinem konkreten Makro:
In der einen Datei werden alle Belege erfasst dh. das ist das Grundbuch (=Datei heute). In der 2. Datei werden die „Konten“ gespeichert, dh. das ist das Hauptbuch (Datei morgen). Um Performancegewinne zu erzielen stellt sich die Frage, ob Grundbuch und Hauptbuch in getrennten Dateien geführt werden müssen. Falls diese Entscheidung schon definitiv ist, dann kannst du Performancegewinne dadurch erzielen, wenn du z.B. bei Beginn der Procedure
Application.ScreenUpdating = False bzw. am Ende dann wieder Application.Screenupdating =True setzt oder den automatischen Berechnungsmodus von Excel pausieren läßt.
Eine weitere Überlegung ist, ob es schneller und besser ist wenn du die beiden Dateien als Objekte definierst und dann darauf zugreifst:
Dim heute as Workbook
Set heute = ActiveWorkbook
Eine weitere Überlegung geht in Richtung Datensicherheit, dh die Eingaben des Anwenders sollen vom Programm möglichst vollständig über Plausibilitätsprüfungen auf ihre Korrektheit getestet werden.
z.B. wenn vom Programm ActiveWorksheet definiert wird, muß m.E. sichergestellt sein, dass der Anwender sich in dem Arbeitsblatt bewegt, das auch vom Programm her dafür vorgesehen ist. Daher kann dieses Arbeitsblatt z.B. bei seinem Namen angesprochen werden (z.B. Worksheets(„Januar“) anstatt ActiveWorksheets). Ausnahmen gibt’s natürlich überall.
Ebenso ist es bei einzelnen Zellinhalten, die verarbeitet werden sollen. Wenn der Code z.B.
KontoNr = ActiveCell lautet, muß vorher sichergestellt sein, dass ActiveCell die richtige, vom Anwender auch entsprechend erkannte und angesprochene Zelle ist. Die gemachte Eingabe sollte auf jeden Fall auf Plausibilität geprüft werden.
Da ich die Dateien natülich nicht kenne und vor allem die Leute, die mit diesen Dateien umgehen (Excelprofis oder "EDF-Wasistdas-User", sind obige Gedanken nur Anregungen, um das Makro möglichst sicher und möglichst schnell zu machen.
Viele Grüße
Herby

Anzeige
AW:Danke- Herby fürNachhilfe Unterricht owT
06.01.2008 13:19:28
michael
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige