Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
816to820
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
816to820
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
VisualBasic Formel anpassen
12.11.2006 14:43:55
graubart
Hallo,
die folgende Formel, sortiert über einen Button, die entsprechenden Zeilen.
Das geht auch soweit.
Bloß die Formelbezüge werden nicht angepaßt.

Private Sub CommandButton1_Click()
Dim rngListen As Range
Set rngListen = Range("A15:AT30,A52:AT67,A89:AT104,A125:AT140")
Application.ScreenUpdating = False
With Application.Workbooks.Add(xlWBATWorksheet).Sheets(1)
.Columns("B:AT").NumberFormat = "@"
.Range("A1:AT16").Formula = rngListen.Areas(1).Formula
.Range("A17:AT32").Formula = rngListen.Areas(2).Formula
.Range("A33:AT48").Formula = rngListen.Areas(3).Formula
.Range("A49:AT64").Formula = rngListen.Areas(4).Formula
.UsedRange.Sort .Cells(1), xlAscending
rngListen.Areas(1).Formula = .Range("A1:AT16").Formula
rngListen.Areas(2).Formula = .Range("A17:AT32").Formula
rngListen.Areas(3).Formula = .Range("A33:AT48").Formula
rngListen.Areas(4).Formula = .Range("A49:AT64").Formula
.Parent.Close False
End With
Application.ScreenUpdating = True
End Sub

Hat jemand dafür eine Lösung?
gruß und danke graubart

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VisualBasic Formel anpassen
12.11.2006 17:17:27
Luc:-?
Tjä, Graubart,
dat is denn mol klor, so geiht dat nich!
Du trägst ja direkt die Formel (quasi als Text) aus einem Zellbereich in einen anderen ein! Empfehle hier .Copy und .Paste. Mal im Editor in der vbHilfe nachsehen!
Gruß Lucius :-?
AW: VisualBasic Formel anpassen
12.11.2006 17:37:37
graubart
Hallo Lucius,
sorry ich habe von VB keine Ahnung, so wie es jetzt ist, hat es ein anderer gemacht. Der ist aber nicht mehr greifbar, deshalb hier nochmal meine Nachfrage, ob und was man konkret ändern müßte um die Forderung nach Anpassen der Zellbezüge beim Sortieren zu erfüllen.
Gruß und danke graubart
AW: VisualBasic Formel anpassen
12.11.2006 18:00:30
Luc:-?
Hallo Graubart,
tut mir leid, hatte deine offensichtlich wahrheitsgemäße Selbsteinschätzung übersehen. Gehe sonst immer davon aus, dass einer einen geposteten PgmCode auch versteht, sonst wird's u.U. schwierig. Aber hier könnte es klappen. Versuch doch mal Folgendes:
Ersetze die ersten 4 derartigen Befehlszeilen analog nachfolg Bsp...

.Range("A1:AT16").Formula = rngListen.Areas(1).Formula
...wird zu...
rngListen.Areas(1).Copy: .Paste(.Range("A1:AT16"))

Dadurch sollten (bei eingestellter Berechnungsautomatik) die Formeln angepasst wdn. Diese wdn dann in den unteren Bedingungen wieder (angepasst) in die RangeAreas zurückgeschrieben, was so bleiben kann. Hoffe, dass das so klappt.
Gruß Luc :-?
Anzeige
AW: VisualBasic Formel anpassen
12.11.2006 20:36:29
graubart
Hallo Luc,
erstmal Danke für Deine Hilfe.
ich habe den Code in meiner Einfältigkeit mal so verändert:

Private Sub CommandButton9_Click()
Dim rngListen As Range
Set rngListen = Range("B15:AU30,B52:AU67,B89:AU104,B125:AU140")
Application.ScreenUpdating = False
With Application.Workbooks.Add(xlWBATWorksheet).Sheets(1)
.Columns("B:AU").NumberFormat = "@"
rngListen.Areas(1).Copy: .Paste (.Range("A1:AU16"))
rngListen.Areas(2).Copy: .Paste (.Range("A17:AU32"))
rngListen.Areas(3).Copy: .Paste (.Range("A33:AU48"))
rngListen.Areas(4).Copy: .Paste (.Range("A49:AU64"))
.UsedRange.Sort .Cells(1), xlAscending
rngListen.Areas(1).Formula = .Range("A1:AU16").Formula
rngListen.Areas(2).Formula = .Range("A17:AU32").Formula
rngListen.Areas(3).Formula = .Range("A33:AU48").Formula
rngListen.Areas(4).Formula = .Range("A49:AU64").Formula
.Parent.Close False
End With
Application.ScreenUpdating = True
End Sub

und zwar aus folgenden Grund. Es soll erst ab Spalte B sortiert werden, denn in Spalte A steht eine fortlaufende Numerierung welche nicht geändert werden darf. Dann habe ich noch die Spalten bis auf Au erweitert.
Mit dem jetzigen Code rutschr alles eine Zeile tiefer.
Was soll erreicht werden.
In einem Tabellenblatt sind 4 gleiche Anwesenheitslisten alle mit dem selben Kopf dort sind auch Grafiken, Datum und Wochentag drin.
In Anwesenheitsliste 1 stehen von B15:B30 die Namen der Mitarbeiter so "Franz, Sprung". Von C15:C30 wird für den jeweiligen Wochentag ein X,K,F,E oder U eingetragen. Ab AJ wird alles gezählt wieviel X hat der Mitarbeiter wieviel U und so weiter. Das geht bis Au.
Normalerweise ist das schon alles sortiert, aber wenn jetzt neue Mitarbeiter dazu kommen so werden die an das Ende der Liste eingetragen und sollen dann mit dem Sortierbutton Alphabetisch an die richtige Stelle kopiert werden und das alles Listenübergreifend.
Das ging ja bisher, denn wir hatten noch keine Formeln drin.
Vielleicht kannst du dir den Code nochmal ansehen?
gruß und danke graubart
Anzeige
AW: VisualBasic Formel anpassen
12.11.2006 22:00:16
graubart
Hallo Luc,
erstmal Danke für Deine Hilfe.
ich habe den Code in meiner Einfältigkeit mal so verändert:

Private Sub CommandButton9_Click()
Dim rngListen As Range
Set rngListen = Range("B15:AU30,B52:AU67,B89:AU104,B125:AU140")
Application.ScreenUpdating = False
With Application.Workbooks.Add(xlWBATWorksheet).Sheets(1)
.Columns("B:AU").NumberFormat = "@"
rngListen.Areas(1).Copy: .Paste (.Range("A1:AU16"))
rngListen.Areas(2).Copy: .Paste (.Range("A17:AU32"))
rngListen.Areas(3).Copy: .Paste (.Range("A33:AU48"))
rngListen.Areas(4).Copy: .Paste (.Range("A49:AU64"))
.UsedRange.Sort .Cells(1), xlAscending
rngListen.Areas(1).Formula = .Range("A1:AU16").Formula
rngListen.Areas(2).Formula = .Range("A17:AU32").Formula
rngListen.Areas(3).Formula = .Range("A33:AU48").Formula
rngListen.Areas(4).Formula = .Range("A49:AU64").Formula
.Parent.Close False
End With
Application.ScreenUpdating = True
End Sub

und zwar aus folgenden Grund. Es soll erst ab Spalte B sortiert werden, denn in Spalte A steht eine fortlaufende Numerierung welche nicht geändert werden darf. Dann habe ich noch die Spalten bis auf Au erweitert.
Mit dem jetzigen Code rutschr alles eine Zeile tiefer.
Was soll erreicht werden.
In einem Tabellenblatt sind 4 gleiche Anwesenheitslisten alle mit dem selben Kopf dort sind auch Grafiken, Datum und Wochentag drin.
In Anwesenheitsliste 1 stehen von B15:B30 die Namen der Mitarbeiter so "Franz, Sprung". Von C15:C30 wird für den jeweiligen Wochentag ein X,K,F,E oder U eingetragen. Ab AJ wird alles gezählt wieviel X hat der Mitarbeiter wieviel U und so weiter. Das geht bis Au.
Normalerweise ist das schon alles sortiert, aber wenn jetzt neue Mitarbeiter dazu kommen so werden die an das Ende der Liste eingetragen und sollen dann mit dem Sortierbutton Alphabetisch an die richtige Stelle kopiert werden und das alles Listenübergreifend.
Das ging ja bisher, denn wir hatten noch keine Formeln drin.
Vielleicht kannst du dir den Code nochmal ansehen?
gruß und danke graubart
Anzeige
AW: Mit anderen Worten - du willst das Pgm...
14.11.2006 04:03:50
Luc:-?
...erweitern, Graubart!?
Mit dem jetzigen Pgm, das alles eine Zeile tiefer rutschen lässt, meinst du das korrigierte? Übrigens fällt mir auf, dass die Spalte A in die Areas mit einbezogen ist. Hat das seine Richtigkeit, wenn diese Spalte nicht verändert wdn darf? Hier wird sie dann allerdings in Folgezeilen weitergeschrieben. Wenn da keine Formel drin ist, sondern Text oder Zahl, wird der/die exakt genauso kopiert wie er/sie dasteht. Aber ich sehe gerade, du kopierst B15:AU30 [Area(1)] nach A1:AU16 - das sind zwar auch 16 Zeilen, aber 20 in 21 Spalten, da wird Spalte B nach A kopiert und Spalte AU bleibt leer! Das ist wohl nicht in deinem Sinn! Wenn es so ist, noch die Adressen im .Paste-Befehl anpassen - B1:AU16 !
Mit dem Sortieren von Formeln ist das so eine Sache. Normalerweise sollten sie das unbeschadet überstehen, wenn sie mit den Ausgangswerten zusammen sortiert wdn. Sonst entsteht u.U. eine andere Reihenfolge bei den Bezügen ähnlich wie beim Verlagern der Ausgangsdaten.
Ich hoffe, das hilft dir weiter. Wenn da auch noch eine störende Leerzeile entsteht, müssen wohl die Areas anders gebildet werden (eine Zeile tiefer, also B16:...).
Leider habe ich nicht so viel Zeit, mich jetzt umfangreicher Arbeiten anzunehmen, arbeite an meiner eigenen Präsentation (Freelancer!). Bin deshalb auch nicht jeden Tag hier.
Viel Erfolg!
Gruß Luc :-?
Anzeige

59 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige