Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1568to1572
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

Tabelle erweitern (makros)

Tabelle erweitern (makros)
10.07.2017 09:42:51
Dennis
Hey, da mein letzter Beitrag schon eine Weile her ist, melde ich mich hier nochmals. Ich möchte meine Tabelle erweitern und das am besten per Button o. Ä. . Michael hat mir dazu folgendes Konstrukt gebaut: https://www.herber.de/bbs/user/114706.xlsm
An sich ich das auch eine gute Sache, funktioniert nur leider nicht für meine Originaldatei, da diese größer ist.
Kann mir jemand den Code erklären, sodass ich diesen einfach an meine Originaldatei anpassen kann? Würde diese ja gerne hochladen, geht leider aber Aufgrund der Dateigröße nicht.
Danke und viele Grüße,
Dennis

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle erweitern (makros)
10.07.2017 11:50:37
Dennis
Kann mir denn niemand weiterhelfen? Daniel, Matthias u. co ihr dürft alle antworten :D
AW: Tabelle erweitern (makros)
10.07.2017 12:48:54
yummi
Hallo Dennis,
ich hab dir mal alle Zeilen dokumentiert. Vielleicht hilft es ja weiter, ansonsten kann ich dir nur den Tip geben, debugge den code und schaud ir den jeweiligen Variableninhalt an um zu verstehen was da passiert

Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook     'hier wird Wn als diese Workbook (diese Excel  _
Datei) definiert
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle1")     'hier wird Ws als Sheet mit dem  _
Namen Tabelle1 definiert
Dim Basis As Range, Gruppe As Range, BlockStart&
Dim a, i&, j&
Application.ScreenUpdating = False                               'Bildschirm aktualisierung  _
aus
With Ws                                                          'alles innerhalb des with  _
blocks bezieht sich auf Ws
a = .Range("F12:F" & .Cells(Ws.Rows.Count, 6).End(xlUp).Row)   'Bereich F12 bis F  _
letzte Zeile in Spalte 6 (F) wird als Varible a festgelegt
For i = LBound(a) To UBound(a)                                  'da a nicht als  _
bestimmter Variablentysp deklariert wurde ist es ein Variant die schleife läuft von der unteren Grenze a(1) bis zur obersten Grenze a(letztezeile)
If InStr(1, a(i, 1), "Projektleiter") Then j = j + 1        'wenn in F1, F2 usw. " _
Projektleiter" steht dann j einen hochzählen (also im Prinzip zahle wie oft in Spalte F Projektleiter steht
Next i                                                          'ende For Schleife
BlockStart = j * 41 + 52                                        'der 1. Block beginnt  _
bei Zeiole 52 jeder Block ist 41 Zeiklen lang so wird an hand der Anzahl Projektleiter die 1. Zeile des 1. Blockes festgelegt
If BlockStart > (.Rows.Count - 42) Then                         'wenn von Blockstart  _
bis letztezeile wenigger als 42 zeilen
MsgBox "Blattende. Kein weiterer Pj-Bereich möglich!"       'fehlermeldung
Exit Sub                                                    'ende programm
End If
Set Basis = .Range("A53:BN93")                                  'Bereich von A53 bis  _
BN93 als Basis festlegen
Basis.Copy Destination:=.Cells(BlockStart + 2, 1)               'kopiere Basis nach  _
Blockstart +4 Zeilen in Spalte A und folgende Spalte (Bereich wird genauso groß)
Set Gruppe = .Range(.Cells(BlockStart + 4, 1), _
.Cells(BlockStart + 41, 66))                       'Gruppe als den Bereich, _
der gerade reinkopiert wurde
Gruppe.Rows.Group                                               'Gruppiere Bereich
End With
Set Wb = Nothing: Set Ws = Nothing                                  'ab hier aufräumen und  _
Speicher wieder freigeben
Set Basis = Nothing: Set Gruppe = Nothing
Erase a
End Sub
Gruß
yummi
Anzeige
AW: Tabelle erweitern (makros)
11.07.2017 09:07:38
Dennis
Hey, also das mit dem debuggen hat bei mir nicht geklappt, bzw. verstehe ich dadurch auch nicht mehr; bei mir ist dann nur eine Zeile gelb markiert die dann wandert, aber ohne jegliche Erklärung... so schlau war ich davor schon. Mache ich was falsch?
AW: Tabelle erweitern (makros)
11.07.2017 09:38:37
yummi
Hallo Dennis,
du bist schon auf dem richtigen Weg. Die gelb markierte Zeile ist die Zeile die als nächstes ausgeführt wird (F8). Du kannst jetzt entweder mit der Maus über die einzelnen Variablen gehen und siehst dann, welchen Wert diese haben oder aber Du ziehst die Variablen unten in das Überwachungsfenster und kannst dort den Inhalt sehen (kann sein, dass Du das Überwachungsfenster bei dir erst anschalten musst (unter Ansicht)
Am besten Debugger auf einen Bildschim, Datei auf einen a2. und dann Schritt für Schritt schauen was für Werte deine Variablen haben und was auf der Oberfläche passiert.
Gruß
yummi
Anzeige
AW: Tabelle erweitern (makros)
11.07.2017 11:59:29
Dennis
Sorry ich hänge da immernoch. Wenn ich mit der Maus drüber gehe kommt nichts und wenn ich parallel meine Exceldatei anschaue, sehe ich da auch keine Veränderung.
Was meinst du mit "Variablen" ins Überwachungsfenster ziehen? Also das Modul reinziehen geht bei mir nicht, dann kommt eine Fehlermeldung. Wahrscheinlich stelle ich mich total dumm an, aber ich stehe gerade so auf dem Schlauch^^
Mein Modul sieht so aus:

Option Explicit
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle1")
Dim Basis As Range, Gruppe As Range, BlockStart&
Dim a, i&, j&
Application.ScreenUpdating = False
With Ws
a = .Range("F12:F" & .Cells(Ws.Rows.Count, 6).End(xlUp).Row)
For i = LBound(a) To UBound(a)
If InStr(1, a(i, 1), "Projektleiter") Then j = j + 1
Next i
BlockStart = j * 41 + 52
If BlockStart > (.Rows.Count - 42) Then
MsgBox "Blattende. Kein weiterer Pj-Bereich möglich!"
Exit Sub
End If
Set Basis = .Range("A14:BN62")
Basis.Copy Destination:=.Cells(BlockStart + 2, 1)
Set Gruppe = .Range(.Cells(BlockStart + 4, 1), _
.Cells(BlockStart + 41, 66))
Gruppe.Rows.Group
End With
Set Wb = Nothing: Set Ws = Nothing
Set Basis = Nothing: Set Gruppe = Nothing
Erase a
End Sub
funktioniert bei mir leider überhaupt nicht. Der Blockstart ist bei mir in Zeile 14 und nur 40 Zeilen lang, also dachte ich hier "Blockstart = j * 40 +14". Dann mache ich Rows Count -41 (statt -42) und meine Basis ist von ("A14-BN63);
was ich sonst noch anpassen müsste weiß ich nicht, verstehe auch 0 die Logik von der 66 bei Set Gruppe... was soll da ne 66 machen ? :D
der Durchblick kommt einfach garnicht haha
Danke und Grüße
Anzeige
AW: Tabelle erweitern (makros)
11.07.2017 13:53:59
yummi
Hallo Dennis,

Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle1")
Dim Basis As Range, Gruppe As Range, BlockStart&
Dim a, i&, j&
Application.ScreenUpdating = False
With Ws
a = .Range("F12:F" & .Cells(Ws.Rows.Count, 6).End(xlUp).Row)
For i = LBound(a) To UBound(a)
If InStr(1, a(i, 1), "Projektleiter") Then j = j + 1
Next i
BlockStart = j * 40 + 14
If BlockStart > (.Rows.Count - 41) Then
MsgBox "Blattende. Kein weiterer Pj-Bereich möglich!"
Exit Sub
End If
Set Basis = .Range("A14:BN63")
Basis.Copy Destination:=.Cells(BlockStart + 2, 1)
Set Gruppe = .Range(.Cells(BlockStart + 4, 1), _
.Cells(BlockStart + 40, 66))      'die 66 sagt hier das dein Bereich 66  _
spalten (1 bis 66)breit ist und 36 Zeilen tief ist (Blockstart +  bis Blockstart +40
Select Gruppe        'die Zeile nur zum debuggen, damit du siehst, ob der Bereich an  _
der richtigen Stelle ist, danach wieder löschen
Gruppe.Rows.Group
End With
Set Wb = Nothing: Set Ws = Nothing
Set Basis = Nothing: Set Gruppe = Nothing
Erase a
End Sub
Mit Reinziehen meine ich markiere eine Variable, linke maustaste drücken und halten und dann im Überwachungsfenster fallen lassen
Gruß
yummi
Anzeige
AW: Tabelle erweitern (makros)
11.07.2017 13:58:25
Dennis
Hallo Yummi, ich habs gelöst und hinbekommen, die Tabelle funktioniert !
Vielen Dank an dich :)
Beste Grüße
Dennis

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige