Makro schreiben

  • #1
S

simdipl

Mitglied
Themenersteller
Dabei seit
25.05.2005
Beiträge
23
Reaktionspunkte
0
hallo zusammen

ich soll einen Makro schreiben mit dem man von 50 Tabellenblätter die Maxima werte auf dem 51. Tabellenblatt aufgelistet bekommt. Dabei habe ich Probleme mit dem Schleifen schreiben. Genauer mit dem verändern der Tabellenblätter, so dass die Tabellen blätter laufen. Also das Maxima von Tabelle 1 und das Maxima von Tabelle 2.
Sowie das durchschleifen der Eintragsfelder im 51. Tabellenblatt so das der Wert aus dem 1. Blatt in B2 steht und der aus dem 2. in B3 und so weiter.
Ich muss dazu sagen das ich noch nie etwas mit Makros zu tun hatte und ich denke das es wahrscheinlich eine einfache Lösung gibt. Könnt ihr mir helfen.

Schon mal Danke im voraus

Schöne Grüße

simdipl
 
  • #2
hi

ich hab dir mal was gemacht. Ganz einfaches ding mit Formeln =)

Code:
Sub maximalwertevon()
Dim lastcell As String, bereich As String, ziel As String, y As Long

y = 1
For x = 1 To 50

->Hier wird der Ort definiert wo die Formel dann reinkommt
 y = y + 1
 
->Die letzte Zelle wird ermittelt
 lastcell = Worksheets(x).Cells.SpecialCells(xlCellTypeLastCell).Address(Rowabsolute:=0, Columnabsolute:=0)
 
->Hier wird bestimmen in welcher Region die grösste Zahl gesucht wird
 bereich = A1: & lastcell
 
->Hier worein es geschrieben wird.
 ziel = B & y
 
->Und hier wird das ganze als formel im letzten Worksheet (51) geschrieben
 Worksheets(51).Range(ziel).Formula = =MAX( & Worksheets(x).Name & !A1: & lastcell & )
Next

End Sub

Hinweis: So wies jetzt steht, wird das letzte Tabellenblatt NUR mit Formeln gefüllt. Falls du jetzt eine löschst, kein problem. Einfach das ganze nochmals ausführen

Hoffe du verstehst meine Kommentare ^^ sonst einfach fragen

mfg billy
 
  • #3
Hi billy

Danke für das Tool ich habe es schon ein wenig abändern müssen, aber es hilft mir schon viel.
Leider habe ich noch ein Problem damit, ich möchte nur noch auf die Werte aus einer Spalte in den Tabellen zugreifen.
Ich weiß das ich in der Zeile:

lastcell = Worksheets(x).Cells.SpecialCells(xlCellTypeLastCell).Address(Rowabsolute:=0, Columnabsolute:=0)

etwas ändern muss aber ich weiß nicht wie. Kannst Du mir helfen?

mfg

simdipl
 
  • #4
ich nehme an dass die spalte die du haben willst zufälligerweise auch die spalte ist in der am meisten drinn steht oder irre ich mich da?
 
  • #5
Datenblockeider falsch angenommen es handelt sich hier bei um einen rechteckigen datenblock. Es gibt ein Zeitpunkt z.B. in Spalte A, wo dann Daten in den übrigen Spalten die erfassten Daten sind. Also alle Spalten sind Gleich lang.
hier noch ein Bsp: ich suche nur den Max Wert der Spalte C von allen Sheets.

Aber zu dem Code nochmals was bedeutet eigentlich die Zeile: bereich = A1: & lastcell
Ich sehe nicht wofür die weiter verwendet wird?

mfg

simdipl
 
  • #6
hi

simdipl schrieb:
Aber zu dem Code nochmals was bedeutet eigentlich die Zeile: bereich = A1: & lastcell
Ich sehe nicht wofür die weiter verwendet wird?

das kann ich dir sagen... du hast ja geschrieben
simdipl schrieb:
ich soll einen Makro schreiben mit dem man von 50 Tabellenblätter die Maxima werte auf dem 51. Tabellenblatt aufgelistet bekommt.

und da hab ich angenommen du brauchst von dem ganzen Tabellenblatt den Maximal wert

aber wenn du ihn nur von einer Spalte brauchst wäre das natürlich einfacher ^^

Code:
Sub maximalwertevon()
Dim bereich As String, ziel As String, y As Long

y = 1
For x = 1 To 50

->Hier wird der Ort definiert wo die Formel dann reinkommt
 y = y + 1
 
->Hier wird bestimmen in welcher Spalte gesucht wird
 bereich = A:A
 
->Hier worein es geschrieben wird.
 ziel = B & y
 
->Und hier wird das ganze als formel im letzten Worksheet (51) geschrieben
 Worksheets(51).Range(ziel).Formula = =MAX( & Worksheets(x).Name & ! & bereich & )
Next

End Sub

siehst ja die wichtigsten änderungen oder? ^^

hoffe dass es nun geht =)
 
  • #7
Hi billy

rechtherzlichen Dank für deine Hilfe es läuft und ich habe auch verstanden wieso einige Dinge drin stehen, die vorher unklar waren.

Eine Frage zur Syntax hätte ich noch und zwar was kommentieren die doppelten Hochkomma in den Klammeren und was bedeuten die & in den Zuweisungen? Sind dies die Anfang- und Endzeichen für Strings oder was darf ich darunter verstehen?

Ich weiß das haut dich jetzt vom Stuhl aber ich möchte den Code halt ganz verstehen und nicht nur das Problem gelöst haben.

Wäre nett wenn du mir das noch mitteilen könntest ansonsten wünsche ich Dir noch ein schönen Wochenende

MFG

Martin
 
  • #8
hi

simdipl schrieb:
Ich weiß das haut dich jetzt vom Stuhl aber ich möchte den Code halt ganz verstehen und nicht nur das Problem gelöst haben.

da weisst du aber nicht viel über mich. Mich hauen nur wenige sachen vom Stuhl ^^, aber egal.

Du hast schon recht das mit den Strings. sind anfangs und schlusszeichen. und die & verbinden den ganzen käse zusammen. wenn du jetzt z.B.

ziel = B & y nimmst und du würdest nur ziel = B & y schreiben. Intepretiert das Makro B als eine variabel.

hoffe hast das verstanden mit meiner erklärung *lal* (ohne dass es dich von den Socken haut :D)

mfg billy
 
Thema:

Makro schreiben

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben