Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

leere Zelle ermitteln
#41
Hi,

jetzt versuche ich es auch noch:

(20.07.2015, 12:48)karomue schrieb: Irgendwie verstehen wir uns nicht, woran das wohl liegt???
Ich habe dazu jetzt schon wiederholt geschrieben: das ist eine neue Schleife, warum siehst du das nicht??? Du willst mir immer beweisen ,dass ich einen Fehler gemacht habe: also nochmal: DAS IST MIT ÜBERWACHUNG IM EINZELSCHRITTVERFAHREN GEPRÜFT, UND ES LÄUFT EINWANFREI, BIS EBEN AUF DIE TATSACHE, DASS DIE ERSTE LEERE zELLE IN REIHE 76 NICHG GEFUNDEN WIRD:

Mal ne schüchterne Frage: lesen kannst du aber schon, oder?

hier Dein Code-Teil mit der For-Schleife, gekürzt um ausgeblendete Zeilen:
            For l = 1 To 30                             ' Beginn For 
           If Cells(j + l, 3).Value <> "" Then         ' Beginn Schleife 1
               Cells(j + l, 3).Select
               If Cells(j + l, 3).Value = "  " Then    ' Beginn Schleife 2 innerhalb Schleife 1
                   Stop
               End If                                  ' Ende Schleife 2 innerhalb Schleife 1
               a = ""
               zaehl = j + l
               Cells(zaehl, 3).Select
           End If                                      ' Ende Schleife 1
           Next l                                      ' Ende For


VBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2000-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 15


Die Schleife 2 ist zwar eine neue Schleife, die aber im True-Teil der Schleife 1 (Value <>"") läuft.
Wenn Du dann in der Schleife 2 auf Value = "" prüfst, kann es dort niemals ein True geben.
Und das ist genau das, was Stefan dauernd schreibt!

Eher geht es so (ungetestet, da ohne Datei):
            For l = 1 To 30                             ' Beginn For 
           If Cells(j + l, 3).Value <> "" Then         ' Beginn Schleife 1
               Cells(j + l, 3).Select
               Else
'                If Cells(j + l, 3).Value = "  " Then    ' Beginn Schleife 2 innerhalb Schleife 1
                   Stop
'                End If                                  ' Ende Schleife 2 innerhalb Schleife 1
               a = ""
               zaehl = j + l
               Cells(zaehl, 3).Select
           End If                                      ' Ende Schleife 1
           Next l                                      ' Ende For


VBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2000-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 15

Antworten Top
#42
Hi Charly,

hier, in diesem Forum, geben alle Helfer ihr Bestes, um einem Fragesteller zu einer Lösung seines Problems zu verhelfen. Und das geschieht alles unentgeltlich in der Freizeit des einzelnen. Wir alle machen das aus reiner Freude und aus Spaß am Exceln.
 
Und nun bitte ich dich, das Ganze einmal aus der Sicht eines Helfers zu betrachten. Eine Metapher soll helfen, das aus dieser Sicht Gewonnene zu verstehen.
 
In einer Stadt haben die Inhaber der Autowerkstätten beschlossen, Tipps, Tricks und Hilfen kostenlos an alle Autofahrer abzugeben. Gedacht war dabei, dass der Hilfesuchende, nennen wir ihn einfach Anton, sich eine Werkstatt aussucht und dort mit seinem Problem vorstellig wird.
Anton, der scheinbar einiges von seinem Gefährt versteht, bemühte die Mitarbeiter des ersten Autohauses (Weiß-Blau) und stellte seine Frage, warum denn das Licht an seinem Fahrzeug nicht ginge. Es gingen Tipps und Fragen ein nach dem Motto:
 
Hast du die Sicherungen überprüft?
Schau mal nach dem Glühfaden der Lampe.
Sitzt die Lampe richtig in ihrer Halterung?
 
Auf alles wusste Anton eine Antwort und wiederholte aber stereotyp, dass sein Licht nicht brenne. Nun forderte ein Mitarbeiter von Weiß-Blau Anton auf, mit seinem Wagen vorzufahren, da alle Tipps ein Stochern im Nebel waren. Mit einer Nachschau wäre das Problem sicherlich in kürzester Zeit behoben. Doch Anton, ganz sicher nicht unter mangelndem Selbstbewusstsein leidend, war der Ansicht, dass das nichts bringe, da ja nicht das Auto, sondern nur etwas im Bereich der Beleuchtung defekt sei.
 
Da die Mitarbeiter, zugegebenermaßen etwas genervt, wiederholt aufforderten, das Auto zur Verfügung zu stellen, wechselte Anton kurzerhand zur Werkstatt Nippon und stelle den dortigen Mitarbeitern dieselbe Frage wie im Haus Weiß-Blau.
 
 Doch, wie kann das sein, auch hier verlangten die Helfer nach einigem Hin und Her nach dem Fahrzeug und warteten mit fast identischen Gründen auf. Irgendwie muss Anton das dann missverstanden haben und gab seinen Worten ein Gewicht, das die Helfer nicht zu tragen bereit waren. Auch sie konterten zum Teil ge-, ja schon fast entnervt mit nachdrücklichem Ton.
 
Aber sind die Helfer wirklich nicht imstande, so eine Beleuchtungseinheit auch per Ferndiagnose wieder zum Leuchten zu bringen? Oder haben die Helfer einfach keinen Bock? Ich glaube nicht, denn alle, die in diesen Werkstätten unentgeltlich – zum Teil auch nachts – mit Rat und Tat den Fragern zur Seite stehen, tun dies aus reinem Spaß an der Freude. Es ist ihr Hobby!
 
Doch wie kann man Anton  nun dazu bringen, dass er mal etwas nachdenkt und den Helfern Recht gibt mit ihrer Meinung, dass nur durch Kenntnis der gesamten Situation, sprich durch Inaugenscheinnahme des ganzen (!) Fahrzeugs adäquate Hilfe geleistet werden kann? Denn schließlich machen sie das alles schon seit vielen, vielen Jahren. Und in der Regel immer erfolgreich. An den Helfern kann es also nicht liegen. Und am Fragesteller?
 
Nun, das sollte Anton schon selbst herausfinden. Sicherlich hilft dabei ein stetes freundliches Wort, eine fruchtbare Kooperation, und die Einsicht, dass niemand ihm schaden oder aus Jux und Tollerei das Auto begutachten will.
 
Und so könnte die Lösung für Antons Problem aussehen:
 
1.       Er entscheidet sich, das Auto nicht vorzustellen und beharrt auf seiner Meinung, dass gute Mechaniker den Fehler auch so finden müssen. Auch auf die Gefahr hin, dass der beste und gutmütigste unter ihnen irgendwann die Lust verliert, weil er partout nichts zur Suche in der Hand hat.
 
 
2.       Er entscheidet sich, das Fahrzeug vorzufahren und es den Helfern zur Begutachtung zur Verfügung zu stellen. Diese sehen sich alle möglichen Fehlerquellen an. Einer von ihnen entdeckt dann ganz versteckt eine blanke Kabelstelle, die die Ursache für all die unnötigen vorausgegangenen Fragen, Nachfragen, unschöne Töne und dergleichen, war. Bei sofortiger Kenntnis dieses Defekts hätte die ganze Hilfsaktion längst abgeschlossen sein können. Einem nächsten Hilfesuchenden könnte geholfen werden.
 
Hi Charly,
 
ist zwar ein langer Text geworden, nicht fachgebunden, aber aus meiner Sicht hilfreich, etwas Schärfe aus den Tönen heraus zu nehmen. Bitte denke wirklich daran, dass dir geholfen wird, aber der Helfer entscheidet, was er dazu benötigt.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#43
Hallo WillWissen.

Schönes Beispiel. Aber es hinkt.

Schau mal: ich habe einen Code der in einer Spalte mit (Datumszellen) das die 1. Zelle finden muss, die belegt ist: dieser Teil läuft.
Danach muss die erste Zelle gefunden werden, die leer ist. Das Makro läuft in diesem Schleifenteil leider über die leere Zelle hinaus und stoppt nicht, es macht hier absolut keinen Sinn, das komplette Makro hier rein zu  stellen. Bedauerlich, dass man immer darauf rumhackt das Makro zu kriegen, obwohl es überhaupt nichts zu Klärung beiträgt.

Belegt ist das ganze über Überwachungsausdrücke (die sich leider nicht kopieren lassen) in der alle Variablen i,j,k,l, alle cells... .values die interessant sind, vergl, zaehl und lRow aufgenommen wurden. Ich weiß also sehr genau was wann/wo passiert, so ist z.B. wenn die Schleife an der leeren Zelle ankommt der Typ Variant/Empty. Nun scheitern alle versuchten Abfragen - wobei alleine eigentlich schon {= ""} reichen sollte. Das sollten sich die Helfer mal   g a n z   langsam auf der Zunge zergehen lasse. Wundert Dich noch, dass ich schon ne Weile sauer bin? Um auf Dein Beispiel zurückzukommen: hier hilft das Auto wirklich nichts. Aber vielleicht glaubst Du mir ja.... Oder siehst Du das anders, was könnte ich denn noch tun zur Klärung? Mir fällt nix mehr ein, bin dabei aufzugeben. Außer Anfeindungen nix gewesen...

LG, Charly
Antworten Top
#44
(20.07.2015, 13:47)Rabe schrieb: Hi,

jetzt versuche ich es auch noch:

(20.07.2015, 12:48)karomue schrieb: Irgendwie verstehen wir uns nicht, woran das wohl liegt???
Ich habe dazu jetzt schon wiederholt geschrieben: das ist eine neue Schleife, warum siehst du das nicht??? Du willst mir immer beweisen ,dass ich einen Fehler gemacht habe: also nochmal: DAS IST MIT ÜBERWACHUNG IM EINZELSCHRITTVERFAHREN GEPRÜFT, UND ES LÄUFT EINWANFREI, BIS EBEN AUF DIE TATSACHE, DASS DIE ERSTE LEERE zELLE IN REIHE 76 NICHG GEFUNDEN WIRD:

Mal ne schüchterne Frage: lesen kannst du aber schon, oder?

hier Dein Code-Teil mit der For-Schleife, gekürzt um ausgeblendete Zeilen:
            For l = 1 To 30                             ' Beginn For 
           If Cells(j + l, 3).Value <> "" Then         ' Beginn Schleife 1
               Cells(j + l, 3).Select
               If Cells(j + l, 3).Value = "  " Then    ' Beginn Schleife 2 innerhalb Schleife 1
                   Stop
               End If                                  ' Ende Schleife 2 innerhalb Schleife 1
               a = ""
               zaehl = j + l
               Cells(zaehl, 3).Select
           End If                                      ' Ende Schleife 1
           Next l                                      ' Ende For


VBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2000-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 15


Die Schleife 2 ist zwar eine neue Schleife, die aber im True-Teil der Schleife 1 (Value <>"") läuft.
Wenn Du dann in der Schleife 2 auf Value = "" prüfst, kann es dort niemals ein True geben.
Und das ist genau das, was Stefan dauernd schreibt!

Eher geht es so (ungetestet, da ohne Datei):
            For l = 1 To 30                             ' Beginn For 
           If Cells(j + l, 3).Value <> "" Then         ' Beginn Schleife 1
               Cells(j + l, 3).Select
               Else
'                If Cells(j + l, 3).Value = "  " Then    ' Beginn Schleife 2 innerhalb Schleife 1
                   Stop
'                End If                                  ' Ende Schleife 2 innerhalb Schleife 1
               a = ""
               zaehl = j + l
               Cells(zaehl, 3).Select
           End If                                      ' Ende Schleife 1
           Next l                                      ' Ende For


VBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2000-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 15

Hallo Ralf,
nein, so geht das nicht. Wie jetzt schon mehrfach gepostet. Nimms nich übel. aber ich bin es langsam leid bei jedem der sich hier äußert immer wiede die gleichen Einwände zu schreiben.
Antworten Top
#45
Hallo,


Zitat:Nun scheitern alle versuchten Abfragen - wobei alleine eigentlich schon {= ""} reichen sollte
... wobei die Zelle, in der das steht eben nicht leer ist. Da steht eine Formel drin.
Aber mach mal, Du schaffst das schon.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#46
Du willst es einfach nicht verstehen. Schade

Ich hoffe nur, Du kommst mal nicht in so eine Situation wie wir, wenn ja kannst Du uns dann sicher verstehen oder auch nicht.
Ich bin raus :16:
Gruß
Fred0



Meine Antworten sind freiwillig und ohne Gewähr!
Wenn nichts angegeben beziehe ich mich auf Excel 2016

Antworten Top
#47
Äh, was ssoll da für eine Formel drin stehen? Die Tabelle wird über Access generiert mit

Select Case Monatswert
    Case "1", "01", " 1"
        DoCmd.OutputTo acOutputReport, "DatumAbfrageAusgaben", acFormatXLS, _
        "DatumAbfrageAusgabenJanuar" & Jahreswert & ".xls", True

da kommt keine Formel vor und Excel generiert sicher keine nur aus Jux und Topllerei.
Antworten Top
#48
(20.07.2015, 15:27)Fred0 schrieb: Du willst es einfach nicht verstehen. Schade

Ich hoffe nur, Du kommst mal nicht in so eine Situation wie wir, wenn ja kannst Du uns dann sicher verstehen oder auch nicht.
Ich bin raus :16:
Ich würde in diesem Fall mal genau lesen und mir eine eigene Prüfmöglichkeit überlegen...
Antworten Top
#49
Hi Charly,

fachlich gesehen kann ich dazu absolut nichts sagen - ich kenne mich in der Materie VBA zu wenig aus. Aber was hindert dich denn wirklich, deine Datei, natürlich anonymisiert, den Helfern zur Verfügung zu stellen. Ich schrieb ja in meinem kleinen Beitrag (ähmm), dass die Helfer entscheiden müssen, was sie benötigen.


Zitat:Nun scheitern alle versuchten Abfragen - wobei alleine eigentlich schon {= ""} reichen sollte.

Ich meine gelesen zu haben, dass die Frage auftauchte, ob die Zellen tatsächlich leer sind. Das zu prüfen wäre mit der Datei bestimmt ein Leichtes.

Glaub' mir, niemand, aber auch wirklich niemand hier, feindet dich an. Du merkst doch selber, dass immer wieder Vorschläge kommen, jedoch nicht dem entsprechen, was du benötigst. In diesem Sinn will ich mit den folgenden Punkten diese Diskussion abschließen:

- Wenn es keine nachvollziehbaren Hinderungsgründe gibt, dann komme doch der Bitte der Helfer nach der Datei nach.  Es ist doch nur zu deinem Vorteil
- Bedenke bitte, dass die Helfer entscheiden müssen, was sie für ihre Hilfe selber benötigen. Du kennst deine Datei, du weißt, wo was steckt. Erklärungen werden dann mit genau diesem eigenen Wissen abgegeben - ein Nichteingeweihter fängt eventuell mit diesen Erklärungen nichts an oder kann diesen ohne weitere Einblicke nicht folgen.
- unschöne Töne sollten (natürlich von allen Seiten) grundsätzlich vermieden werden.
- Last, but not least - du suchst Hilfe. Mit entsprechender Mitwirkung wirst du sie auch sicherlich bald haben.

In diesem Sinne ziehe ich mich aus dieser Diskussion zurück und lese nur noch mit. Natürlich drücke ich dir alle  Thumps_up damit du bald deine Lösung hast.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#50
Code:
Private Const Schriftart As String = "Arial"
Private Const Schriftgroesse As Integer = 8                 'ColorIndex
Private Const ColorIndgelb As Integer = 6
Private Const ColorIndrot As Integer = 46
Private Const ColorIndgrün As Integer = 4
Private i As Integer
Private Korr As Integer
Dim ExcelSheet As Object
Dim Zuordng(1 To 16, 1 To 2) As String           '("Arbeitsmittel","Computer"), 1 für Monatsblatt, 2 für Jahresblatt
Dim Monatsfeld(1 To 12)                          'Hilfsfeld für SummeMonatGruppe
Dim SummeMonatGruppe(1 To 12, 1 To 11) As String '12 Monate/11Gruppen=Arbeitsmittel, Computer
Dim LenJahrMonat(1 To 16, 1 To 2) As Integer     'AnzahlGruppeneinträge/Anzahl (Jahr-Monat)
Dim EndPosJahrMonat(1 To 16, 1 To 2) As Integer
Dim DateiName As String
Dim Jahr As String
Dim FileName As String
Dim RehaSum As Variant
Private Declare Function GetComputerName Lib "kernel32" _
Alias "GetComputerNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long
'declare PtrSafe....
Dim lRow As Long


Sub AusgabeAktuell()
'K.R. Müller, erstellt im April 1998
'hier für 2001 geändert
'geändert 11.9.2000
'geändert für allgem. Jahreseingabe 15.1.2001
'letzte Änderung 20.1.2002
'
Dim Vertical As Integer
Dim WertJahr As Single
Dim WertMonat As Single
Dim AktuelleMappe As String
Dim AktuellesFenster As String

Anzeigejahr = Mid$(Now, 7, 4)
Jahr = InputBox("Bitte Auswerte-Jahr eingeben: z.B.    2000, 2001" + Chr(13) + Chr(10) + _
Chr(10) + ">>Entspr. Ausgabe-File muß geöffnet sein!<<", "Jahres-Abfrage ", Anzeigejahr)
Anzeigemonat = Mid$(Now, 4, 2)
Monat = InputBox("Bitte Auswerte-Monat eingeben: z.B.    Januar/Jan/jan/1 ...", "Monats-Abfrage", Anzeigemonat)
M1 = "DatumAbfrageAusgaben"
M2 = Right(Jahr, 2) + ".xls"

'ChDir "Arbeitsplatz" '  "E_Platte\Excel_MP"
'AusgabenFileSuchen

Select Case HolComputerName
    Case "CHARLY-PC"
        DateiName = "D:\Neuer Aktenkoffer\Ausgaben " & Jahr & ".xls"
    Case "CHARLYS-NB"
        'DateiName = "D:\Aktenkoffer\Ausgaben " & Jahr & ".xls"
        DateiName = "c:\Benutzer\karomue\EigeneDokumente\Aktenkoffer\Ausgaben " & Jahr & ".xlsx"
    Case "ROBERT1"
        DateiName = "E:\EXCEL_MP\Ausgaben " & Jahr & ".xls"
    Case "KAROMUE-NB"
        'DateiName = "C:\Benutzer\karomue\EigeneDokumente\Aktenkoffer\Ausgaben " & Jahr & ".xls"
        'DateiName = "C:\Users\karomue\Documents\Aktenkoffer\Ausgaben " & Jahr & ".xls"
        'DateiName = "C:\Users\karomue\Eigene Dokumente\Aktenkoffer\Ausgaben " & Jahr & ".xls"
        DateiName = "C:\Users\karomue\Documents\Aktenkoffer\Ausgaben " & Jahr & ".xls"
        



End Select

'If HolComputerName = "CHARLY-PC" Then
'    DateiName = "D:\Neuer Aktenkoffer\Ausgaben " & Jahr & ".xls"
'*Else
'    DateiName = "E:\EXCEL_MP\Ausgaben " & Jahr & ".xls"
'End If

'DateiName = "C:\Users\karomue\Documents\Aktenkoffer\Ausgaben " & Jahr & ".xls"

'ChDir "C:\WIN98\Desktop\Aktenkoffer"
'Workbooks.Open FileName:="C:\WIN98\Desktop\Aktenkoffer\Ausgaben2002.xls"
Workbooks.Open FileName:=DateiName


Select Case Left(Monat, 3)
    Case "Jan", "jan", "1", "1 ", "1  ", "01"
        Monat = "Januar"
    Case "Feb", "feb", "2", "2 ", "2  ", "02"
        Monat = "Februar"
    Case "Mar", "mar", "Mär", "mär", "3", "3 ", "3  ", "03"
        Monat = "März"
    Case "Apr", "apr", "4", "4 ", "4  ", "04"
        Monat = "April"
    Case "Mai", "mai", "5", "5 ", "5  ", "05"
        Monat = "Mai"
    Case "Jun", "jun", "6", "6 ", "6  ", "06"
        Monat = "Juni"
    Case "Jul", "jul", "7", "7 ", "7  ", "07"
        Monat = "Juli"
    Case "Aug", "aug", "8", "8 ", "8  ", "08"
        Monat = "August"
    Case "Sep", "sep", "9", "9 ", "9  ", "09"
        Monat = "September"
    Case "Okt", "okt", "10", "10 "
        Monat = "Oktober"
    Case "Nov", "nov", "11", "11 "
        Monat = "November"
    Case "Dez", "dez", "12", "12 "
        Monat = "Dezember"
End Select

m = M1 + Monat + M2

AktuelleMappe = m
AktuellesFenster = Monat

Zuordng(1, 1) = "Arbeitsmittel"
Zuordng(2, 1) = "Computer"
Zuordng(3, 1) = "Unterhalt"
Zuordng(4, 1) = "Haus"
Zuordng(5, 1) = "Ben"
Zuordng(6, 1) = ""
Zuordng(7, 1) = "Kfz"
Zuordng(8, 1) = "Kleidung KR"
Zuordng(9, 1) = ""
Zuordng(10, 1) = "Privat"
Zuordng(11, 1) = ""
Zuordng(12, 1) = "WP"
Zuordng(13, 1) = "Telefon"
Zuordng(14, 1) = "Versicherung"
Zuordng(15, 1) = "Einnahmen"
Zuordng(16, 1) = "Ausgaben"
    
    Windows("Ausgaben " + Jahr + ".xls").Activate
    Worksheets(AktuellesFenster).Activate
    
    For i = 1 To 300
        Cells(i, 6).Select
        If ActiveCell.Value = "Kontrollwert " Then Exit For
    Next i
    VerticalJahr = i
     
    For i = 2 To 16
        LeereGruppen i                           'überspringt leere Gruppen
        For j = 1 To VerticalJahr
            Cells(j, 1).Select
            If ActiveCell.Value = Zuordng(i, 1) Then Exit For
        EndPosJahrMonat(i - 1 - Korr, 1) = j - 1
        Next j
    Next i

    For i = 2 To 16
        LeereGruppen i                           'überspringt leere Gruppen
        If EndPosJahrMonat(i, 1) <> 0 Then
            LenJahrMonat(i, 1) = EndPosJahrMonat(i, 1) - EndPosJahrMonat(i - 1 - Korr, 1) - 2
        End If
    Next i
    LenJahrMonat(1, 1) = EndPosJahrMonat(1, 1) - 4
    
     
    'Windows(AktuelleMappe).Activate
    ActiveWorkbook.Activate
    Cells.Select                                     'selektiert ganzes Blatt
    Cells.EntireRow.AutoFit                  'optimiert Spaltenbreite
    Cells.EntireColumn.AutoFit              'optimiert Zeilenhöhe
   
    For i = 1 To 300
        Cells(i, 6).Select
        If ActiveCell.Value = "BETRAG Gesamtsumme Summe:" Then Exit For
    Next i
    Vertical = i
    
    For jj = 1 To 15
        kk = 0
        For ii = 1 To Vertical
            Cells(ii, 2).Select
            If Cells(ii, 2).Value = jj Then
                For kk = 0 To Vertical
                    If Cells(ii + kk, 2).Value <> jj Then Exit For
                    EndPosJahrMonat(jj, 2) = ii + kk
                Next kk
                ii = ii + kk
            End If
        Next ii
        LenJahrMonat(jj, 2) = kk
    Next jj
    
    Windows("Ausgaben " + Jahr + ".xls").Activate
    Worksheets(AktuellesFenster).Activate

    For i = 15 To 2 Step -1
        Diff = 0
        'If i = 12 Then i = i - 1       'überspringt leere Gruppen --> 12 wurde für WP verwendet, 11.9.2000
        If i = 11 Then i = i - 1
        If i = 9 Then i = i - 1
        If i = 6 Then i = i - 1
        'If i = 5 Then i = i - 1
        If LenJahrMonat(i, 1) <= LenJahrMonat(i, 2) Then
            Diff = LenJahrMonat(i, 2) - LenJahrMonat(i, 1)
            Range(Cells(EndPosJahrMonat(i, 1), 1), Cells(EndPosJahrMonat(i, 1) _
            + Diff, 20)).Select
            Selection.EntireRow.Insert
            VerticalJahr = VerticalJahr + Diff + 1 'Korrektur der Bearbeitungslänge in"AusgabenXXXX"
        Else
            If LenJahrMonat(i, 1) > LenJahrMonat(i, 2) + 1 And LenJahrMonat(i, 1) > 2 Then
                Diff = LenJahrMonat(i, 1) - LenJahrMonat(i, 2) - 1
                Range(Cells(EndPosJahrMonat(i, 1) - Diff, 1), Cells(EndPosJahrMonat(i, 1) - 1, 20)).Select
                Selection.EntireRow.Delete
            End If
        End If
    Next i
    
        For i = 2 To 16
        LeereGruppen i                           'überspringt leere Gruppen
        For j = 1 To VerticalJahr
            Cells(j, 1).Select
            If ActiveCell.Value = Zuordng(i, 1) Then Exit For
        EndPosJahrMonat(i - 1 - Korr, 1) = j - 1
        Next j
    Next i

    
    'Windows(AktuelleMappe).Activate
    ActiveWorkbook.Activate
    
    Cells(Vertical + 4, 1).Select
    ActiveCell.FormulaR1C1 = "Gruppe"
    Cells(Vertical + 4, 2).Select
    ActiveCell.FormulaR1C1 = "GrupAnzJahr"
    Cells(Vertical + 4, 3).Select
    ActiveCell.FormulaR1C1 = "EndPosJahr"
    Cells(Vertical + 4, 4).Select
    ActiveCell.FormulaR1C1 = "GrupAnzMonat"
    Cells(Vertical + 4, 5).Select
    ActiveCell.FormulaR1C1 = "EndPosMonat"
    Cells(Vertical + 20, 1).Select
    ActiveCell.FormulaR1C1 = "BearbLgJahr"
    Cells(Vertical + 20, 3).Value = VerticalJahr
        
    For x = 1 To 15
        Cells(Vertical + 4 + x, 1).Value = x
        Cells(Vertical + 4 + x, 2).Value = LenJahrMonat(x, 1)
        Cells(Vertical + 4 + x, 3).Value = EndPosJahrMonat(x, 1)
        Cells(Vertical + 4 + x, 4).Value = LenJahrMonat(x, 2)
        Cells(Vertical + 4 + x, 5).Value = EndPosJahrMonat(x, 2)
        If Cells(Vertical + 4 + x, 2).Value <> Cells(Vertical + 4 + x, 4) Then

'Längenvergleich Gruppen Monat/Jahr
        End If
    Next x
    Range(Cells(Vertical + 4, 1), Cells(Vertical + 25, 5)).Select
    
    Schrift Schriftgroesse, Schriftart
    For x = 1 To 15                             'kopieren von Monat in Jahr
        If LenJahrMonat(x, 2) > 0 Then
            'Windows(AktuelleMappe).Activate
            ActiveWorkbook.Activate
            Range(Cells(EndPosJahrMonat(x, 2) - (LenJahrMonat(x, 2) - 1), 1), _
            Cells(EndPosJahrMonat(x, 2), 11)).Select
            Selection.Copy
            Windows("Ausgaben " + Jahr + ".xls").Activate
            Worksheets(AktuellesFenster).Activate
            Cells(EndPosJahrMonat(x, 1) - LenJahrMonat(x, 2), 1).Select
            ActiveSheet.Paste
        End If
        For i = 0 To LenJahrMonat(x, 2) - 1
            Cells(EndPosJahrMonat(x, 1) - LenJahrMonat(x, 2) + i, 13).Value = _
            Cells(EndPosJahrMonat(x, 1) - LenJahrMonat(x, 2) + i, 6).Value * 1.95583
            a = Cells(EndPosJahrMonat(x, 1) - LenJahrMonat(x, 2) + i, 8).Value
            Cells(EndPosJahrMonat(x, 1) - LenJahrMonat(x, 2) + i, 8).Value = ""
            Cells(EndPosJahrMonat(x, 1) - LenJahrMonat(x, 2) + i, 12).Value = a
        Next i
    Next x
    
    Windows.Arrange ArrangeStyle:=xlHorizontal
    Windows("Ausgaben " + Jahr + ".xls").Activate
    Columns("L:Q").Select
    'Range("L70").Activate
    Selection.NumberFormat = "0.00"
    Cells.Select                                'selektiert ganzes Blatt
    Schrift Schriftgroesse, Schriftart
    Cells.EntireRow.AutoFit                     'optimiert Spaltenbreite
    Cells.EntireColumn.AutoFit                  'optimiert Zeilenhöhe
    Range("C:C").Select
        With Selection                          'Ausrichtung rechtsbündig
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .ShrinkToFit = False
    End With
    
    Sheets(Jahr).Select
    For i = 2 To 28
        For j = 15 To 17
            Cells(i, j).Select
                If ActiveCell.Value >= 0 Then
                     With Selection.Interior
                        .ColorIndex = 4
                        .Pattern = xlSolid
                        Selection.Font.ColorIndex = 1
                    End With
                Else
                     With Selection.Interior
                        .ColorIndex = 45
                        .Pattern = xlSolid
                        Selection.Font.ColorIndex = 2
                    End With
                End If
        Next j
    Next i
    Cells(1, 1).Select                                  'zeigt ganzes Fenster an
    
    'Windows("Ausgaben 2002.xls").Activate
    
    Reha (Anzeigejahr)
    
    ActiveWorkbook.Save                         '  "Ausgaben<jjjj>"  ist aktiv

    
    Worksheets(AktuellesFenster).Activate
    Range("G1").Select
        Cells.Find(What:="Kontrollwert", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False).Activate
    ActiveCell.Offset(0, 1).Activate
    WertJahr = ActiveCell.Value
    'Windows(AktuelleMappe).Activate
    ActiveWorkbook.Activate
    
'*************************************************************************
    a = ""
    For i = 1 To 16
      Windows("Ausgaben 2015.xls").Activate
      'vergl=ausgaben 2015.xls").Activate
        Cells(2, i).Select
        'vergl=
        vergl = Zuordng(i, 1)
        Windows("DatumAbfrageAusgabenMärz2015.xls").Activate
        For j = 1 To 500
            Cells(j, 1).Select
            
            If Cells(j, 1).Value = vergl Then
                Windows("Ausgaben 2015.xls").Activate
                For k = 1 To 300
                    Cells(k, 1).Select
                    If Cells(k, 1).Value = vergl Then
                        'Column(j + 1, 10).Select
                        Windows("DatumAbfrageAusgabenMärz2015.xls").Activate
                        Cells(k, 3).Select
                        For l = 1 To 30
                            If Cells(j + l, 3).Value <> "" Then
                                Cells(j + l, 3).Select
                                'zaehl = j + l
                                    'a = Right(Cells(j + l, 3), 5)
                                    'If a = "" Then
                                    'If Cells(j + l, 3).Value = "  " Then
                                    'If Cells(j + l, 3).Value = False Then
                                    'If Cells(j + l, 3).Formula = " " Then
                                    'If Range(Cells(j + 1, 3)).Value = "" Then
                                    'Cells(1, 3).End(xlDown).Offset(1, 0)
                                    'If Range("d65536").End(xlUp).Offset(1, 0).Value Then
                                    'If (Cells(j + l, 3).Value) Is Null Then
                                    'If istleer(j + l, 3) Then
                                    lRow = Range(Cells(j + 1, 3), Cells(Rows.Count, 1)).Find(What:="").Row
                                    MsgBox "1." & lRow
                                        Stop
                                    'End If
                                    a = ""
                                zaehl = j + l
                                Cells(zaehl, 3).Select
                                    'Rows("3:9").Select

                            End If
                        Next l
                        
                        Stop
                    End If
                Next k
                Stop
            End If
            
        Next j
           ' For j = 1 To 500
           ' If Cells(1, j).Value = vegl Then
            Windows("DatumAbfrageAusgabenMärz2015.xls").Activate
        'Next j
    Next i


    
    'Range("G1").Select
    '    Cells.Find(What:="BETRAG Gesamtsumme Summe:", After:=ActiveCell, LookIn:=xlFormulas, _
    '    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    '    MatchCase:=False).Activate
    '    ActiveCell.Offset(0, 1).Activate
    '    WertMonat = ActiveCell.Value
    '    If WertJahr = WertMonat Then
    '        MsgBox ("Auswertung o.K.")
    '    Else
    '        MsgBox ("Fehler")
    '    End If
    'Windows("Ausgaben 2004.xls").Activate
    'ActiveWorkbook.SaveAs FileName:= _
    '    "C:\Dokumente und Einstellungen\Charly.KAROMUE\EigeneDateien\Ausgaben 2004.xls" _
    '    , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
    '    ReadOnlyRecommended:=False, CreateBackup:=False

End Sub

So. Zufrieden?
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste