Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1488to1492
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
Inhaltsverzeichnis

Schon wieder ratlos -Makro

Schon wieder ratlos -Makro
23.04.2016 16:05:10
Frank
Halo zusammen!
Allen ein schönes WE!
Mein Makro, bekommen aus dem Forum, selbst versucht umzustricken, es passiert schon was, aber leider nicht wie gewünscht.
Set A = Nothing: Set F = Nothing
Set A = Worksheets("Ansicht")
Set F = Worksheets("Adressen")
lngRows = F.Range("A65536").End(xlUp).Row + 1
For lng = 1 To lngRows
For c = 2 To 14 Step 2
If VarType(F.Cells(lng, 5)) = vbDate Then
If Day(F.Cells(lng, 5)) = Day(A.Cells(40, c)) And Month(F.Cells(lng, 5)) = Month(A.Cells(40, c)) Then
lng2 = lng2 + 1
A.Cells(lng2 + 35, c) = F.Cells(lng, 4) & " " & F.Cells(lng, 3)
End If
End If
Next c
Next lng
Set A = Nothing: Set F = Nothing
Problemstellung:
In Zeile 40 B, D, - N steht immer ein Datum
In die Zeilen 43, 44 und 45 sollen bei Gleichheit von Tag und Monate die Werte aus Spalte 5, Tabelle - Adressen eingetragen werden.
Das passiert auch, aber eben nicht ab 43, sondern mal in 45, dann in 44, als eben ohne System. wo mache ich denn schon wieder einen Denkfehler, bitte um Hilfe und Danke im Voraus!
Gruß Frank H.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schon wieder ratlos -Makro
23.04.2016 16:41:00
Hajo_Zi
Hallo Frank,
For lng = 1 To lngRows
ändern in
For lng =43 To 45
A.Cells(lng2 + 35, c) = F.Cells(lng, 4) & " " & F.Cells(lng, 3)
ändern in
A.Cells(lng, c) = F.Cells(lng, 4) & " " & F.Cells(lng, 3)
glaubst Du wirklich jemand baut die Datei nach?

AW: Schon wieder ratlos -Makro
23.04.2016 16:41:52
Michael
Hi Frank,
ohne Beispieldatei ist mir das zu viel Gefummel.
Deshalb nur so viel:
Zellenzugriffe sind relativ langsam, deshalb würde ich zwei zusätzliche Variablen definieren und zwischen den zwei IFs beide zuweisen und im zweiten IF vergleichen. Ach, ich sehe gerade, daß man die zweite For-Schleife "unter" das 1. If setzen kann, also insgesamt etwa so:
Option Explicit
Sub test()
Dim A As Worksheet, F As Worksheet
Dim TagF As Integer, MonatF As Integer
Dim lngrows As Long, lng2 As Long, lng As Long, c As Long
Set A = Worksheets("Ansicht")
Set F = Worksheets("Adressen")
lngrows = F.Range("A65536").End(xlUp).Row + 1
For lng = 1 To lngrows
If VarType(F.Cells(lng, 5)) = vbDate Then
TagF = Day(F.Cells(lng, 5))
MonatF = Month(F.Cells(lng, 5))
For c = 2 To 14 Step 2
If TagF = Day(A.Cells(40, c)) And MonatF = Month(A.Cells(40, c)) Then
lng2 = lng2 + 1
A.Cells(lng2 + 35, c) = F.Cells(lng, 4) & " " & F.Cells(lng, 3)
End If
Next c
End If
Next lng
Set A = Nothing: Set F = Nothing
End Sub

Die innere For-Schleife braucht es ja doch nur, wenn VarType(F.Cells(lng, 5)) = vbDate
Wenn es so formuliert ist, wird auch eine mögliche Fehlerquelle offensichtlich: Du gehst mit lng alle Zeilen in F durch, übernommen werden aber die Werte unabhängig von lng, nämlich in die Zeile lng2.
D.h., vermutlich ist es damit getan, lng2 vor Beginn der inneren Schleife mit dem Wert von lng zu versehen - oder so ähnlich: ich weiß ja nicht, wie Deine Tabelle aussieht.
Schöne Grüße,
Michael

Anzeige
AW: Schon wieder ratlos -Makro
23.04.2016 19:01:34
Frank
Hallo Michael!
Danke dir für deine Hilfe, leider genau der selbe Effekt wie bei mir. Ein Bsp.-Datei ist zu groß, kann sie im Moment auch nicht abspecken. Ich habe aber eine andere Idee, werde erst einmal selber weiter fummeln. Trotzdem Danke und einen schönen Sonntag morgen.
Gruß Frank H.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige