Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
424to428
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
424to428
424to428
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

actice cell setzen

actice cell setzen
05.05.2004 14:09:22
Harald E
Hallo zusammen,
damit mein Code richtig durchläuft, ist es notwendig, dass in 3 Tabellenblätter jeweils dieselbe Zelle aktiv ist.

Grundsätzlich: Wenn in Tabellenblatt "Müller" C4 aktiviert ist und der Code gestartet wird, muss zuerst in den beiden übrigen Blättern ("Meier","Muster") ebenfalls C4 die active Zelle sein.
Das soll variabel gelten für C4 bis AG4.
Und ebenfalls für den Fall das der Code aus den Blättern "Meier" oder "Muster" heraus gestartet wird.
Bisher musste ich immer manuell die "richtige" Zelle aktivieren. Habe ich dieses versäumt und die aktiven Zellen lagen woanners, hats mir die Daten an falsche Stellen reinkopiert :-(
Hoffe ihr könnt mir da helfen ....sofern ich mich verständlich ausgedrückt habe.
Gruß
Harry

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

Betreff
Datum
Anwender
Anzeige
AW: actice cell setzen
05.05.2004 14:17:09
xXx
Hallo,
da unterliegst du einem schweren Irrtum. Du musst nicht mit ActiveCell arbeiten.
Verfahre nach fogenden Muster:
Dim Z as integer, S as Byte
Z=Activecell.Row
S=Activecell.column
sheets("Meier").cells(z,s)=activecell
Sheets("Muster").cells(z,s)=activecell
Gruß aus'm Pott
Udo
AW: actice cell setzen
05.05.2004 14:30:30
Harald
Hallo Uwe,
folgenschwere Fehler unterlaufen mir ständig ;-)
Untenstehend, warum ich eine aktive Zelle brauche. Und zwar grundsätzlich für Schicht 1 an diesem speziellen Tag (das variiert natürlich bei Wechselschicht).
Alle drei Schichtblätter sind gleich aufgebaut und unterhalb der Datumszelle werden dann Daten reinkopiert.
Dim Filename As String
Filename = "I:\NIO_Zahlen\FS\NIO_FS" & Format(ActiveCell, "yyyy") & Format(ActiveCell, "mm") & Format(ActiveCell, "dd") & ".xls"
If Dir(Filename) = "" Then
MsgBox "Gesuchte Datei wurde nicht gefunden."
Exit Sub
Else
Workbooks.Open Filename
End If
Dein Lösungsansatz erscheint mir auf alle Fälle sinnvoll . Werde das morgen austesten, da Feierabend.
Rückmeldung folgt.
Besten Dank soweit und lass dich nicht ärgern
Harald
Anzeige
noch ein Fehler:
05.05.2004 19:38:00
xXx
ich heiße Udo, nicht Uwe ;-)))
Gruß aus'm Pott
Udo
AW: noch ein Fehler:
06.05.2004 09:18:35
Harald E
Sorry, Udo.
War keine Absicht, zumal Du mir hier ja schon öfter Spitzenlösungen angeboten hast (dafür auch nochmal Danke)
Ich hab deinen Code mal eingesetzt.
Es passiert Folgendes:
Er setzt die aktiven Zellen der anderen 2 Sheets nicht auf die gleiche Zelle wie die von mir markierte Startzelle. Dafür ändert sich in der Startzelle der Eintrag in der Bearbeitungsleiste von z.B. F4+1 in 05.05.2004 (Format TT.). Liegt vermutlich an der Dim as Geschichte (mit 4 Tagen VBA-Kurs verfüge ich nur über ein gefährliches Halbwissen).
Auf die Gefahr hin, mich zur Nervensäge zu degradieren.
Ich erklärs mal anners. In Zeile 3 steht in jedem der drei Sheets ein Tagesdatum. c3 ist 01.05.2004, d3 ist c3+1, e3 ist d3+1, usw. (alle formatiert mit TT.)
Ich möchte eine Auswertung vom 03.05. fahren.
Ich gucke im Kalender welche Schicht an diesem Tag Frühschicht (Schicht1) ist, aktiviere Zelle e3 (Datum) in dem betreffenden Sheet und starte den Code.
Da viele Kollegen -die noch weniger von Excel wissen als ich- auch in dieser Datei rumspielen, soll der Code zuerst e3 übernehmen und in den beiden anderen Sheets als aktive Zelle setzen und bevor es weitergeht wieder im betreffenden Sheet sein.

Der Code holt schichtbezogene Daten aus einer anderen Datei (in dem Fall NIO_FS_20040503)
und fügt sie in das betreffende Schicht-Sheet ein und wechselt solange bis alle drei Schichten ausgewertet sind.
Ich schätze man kann die Sache mit der datumsbezogenen Schichtzuweisung auch komplett per vba automatisieren, doch das übersteigt meinen aktuellen VBA-Horizont doch bei Weitem.
Wie gesagt .."man" kann. Ich nicht. ;-|
Besten Gruß
Harry
Anzeige
AW: actice cell setzen
06.05.2004 11:41:09
Martin Beck
Hallo Harald,
es sträuben sich einem zwar die Nackenhaare, aber ohne Deinen Code zu kennen und viel Zeit zu investieren ist eine Lösung ohne select/activate schwierig. Daher schweren Herzens ;-) folgender Ansatz:

Sub Aktivieren()
If ActiveSheet.Name = "Tabelle1" Or ActiveSheet.Name = "Tabelle2" Or ActiveSheet.Name = "Tabelle3" Then
nm = ActiveSheet.Name
z = ActiveCell.Row
s = ActiveCell.Column
Worksheets("Tabelle1").Activate
Cells(z, s).Select
Worksheets("Tabelle2").Activate
Cells(z, s).Select
Worksheets("Tabelle3").Activate
Cells(z, s).Select
Worksheets(nm).Activate
End If
End Sub

Gruß
Martin Beck
Anzeige
AW: actice cell setzen
06.05.2004 12:57:53
Harald
Hallo Martin,
vielen Dank. Läuft super.
Apropos gesträubte Haare. Hier mein Code für die Vorderachsauswertung( Hinterachse ist 3mal so lang).
Eigentlich zum Weglaufen. Nix für Freunde des guten Geschmacks.

Sub DateiOeffnenFS()
'Beschleuniger
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'setzt gleiche Zelle in den Schichtblättern
Call Aktivieren
'öffnet Vorderachsdatei für Datum der aktiven Zelle
Dim Filename As String
Filename = "I:\NIO_Zahlen\FS\NIO_FS" & Format(ActiveCell, "yyyy") & Format(ActiveCell, "mm") & Format(ActiveCell, "dd") & ".xls"
If Dir(Filename) = "" Then
MsgBox "Gesuchte Datei wurde nicht gefunden."
Exit Sub
Else
Workbooks.Open Filename
End If
'löschen falscher Datums- und Schichtzeilen
Dim d As Range, txt As String
For Each d In Worksheets(1).Range("A2:A8")
txt = d.Text + ".xls"
If txt <> Right(ActiveWorkbook.Name, 12) Then
d.EntireRow.ClearContents
End If
Next d
For i = 2 To 8
If Cells(i, 2) < 1 Then Cells(i, 2).EntireRow.ClearContents
Next i
For e = 2 To 8
If Cells(e, 2) > 3 Then Cells(e, 2).EntireRow.ClearContents
Next e
For f = 2 To 8
If Cells(f, 3) <> 1 Then Cells(f, 3).EntireRow.ClearContents
Next f
Rows("2:9").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Auswerten
Range("C10:C12").Cut Destination:=Range("C2:C4")
Range("T:U,CO:DD").Delete Shift:=xlToLeft
Range("AG2").FormulaR1C1 = "=VALUE(LEFT(RC[51],3))"
Range("AG2").Select
Selection.Copy
Range("AG2:AS4").Select
ActiveSheet.Paste
Range("C2:AS2").Copy
'Wechseln
Windows("Pareto_Analyse_05_04.xls").Activate
'fügt die kopierten Teilergebnisse ein und setzt aktive Zelle einen Tag weiter
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ActiveCell.Offset(-1, 1).Select 'VOA
'Blattwechsel und NIO_Datei aktivieren
Call namesFS
'Schicht 2 markieren
Range("C3:AS3").Select
Selection.Copy
Windows("Pareto_Analyse_05_04.xls").Activate
' fügt die kopierten Teilergebnisse ein und setzt aktive Zelle einen Tag weiter
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ActiveCell.Offset(-1, 1).Select 'VOA
'Blattwechsel und NIO_Datei aktivieren
Call namesFS
'Schicht 3 markieren
Range("C4:AS4").Select
Selection.Copy
Windows("Pareto_Analyse_05_04.xls").Activate
' fügt die kopierten Teilergebnisse ein und setzt aktive Zelle einen Tag weiter
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ActiveCell.Offset(-1, 1).Select 'VOA
'Blattwechsel und NIO_Datei aktivieren
Call namesFS
ActiveWindow.Close False
Windows("Pareto_Analyse_05_04.xls").Activate
'Beschleuniger beenden
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
ActiveWorkbook.Save
MsgBox "Vor der nächsten Auswertung bitte Excel neu starten !"
'muss sein, da Excel sonst bei der nächsten Auswertung abstürzt
End Sub


Sub Aktivieren()
If ActiveSheet.Name = "Aufschreibung NA KOCKLER" Or ActiveSheet.Name = "Aufschreibung NA  GÜTTLER" Or ActiveSheet.Name = "Aufschreibung WILLBERGER" Then
nm = ActiveSheet.Name
Z = ActiveCell.Row
S = ActiveCell.Column
Worksheets("Aufschreibung NA KOCKLER").Activate
Cells(Z, S).Select
Worksheets("Aufschreibung NA  GÜTTLER").Activate
Cells(Z, S).Select
Worksheets("Aufschreibung WILLBERGER").Activate
Cells(Z, S).Select
Worksheets(nm).Activate
End If
End Sub


Sub namesFS()
Dim a As String
a = Right(ActiveSheet.Name, 4)
If a = "RGER" Then
Sheets("Aufschreibung NA KOCKLER").Activate
ElseIf a = "KLER" Then
Sheets("Aufschreibung NA  GÜTTLER").Activate
ElseIf a = "TLER" Then
Sheets("Aufschreibung WILLBERGER").Activate
End If
Call aktivierenFS
End Sub

Gruß
Harald
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige