Zelle anzeigen beim Öffnen
#1
Hi,

ich dachte, wenn ich ein Sheet aktiviere und eine Zelle selektiere, dann wird sie auch angezeigt, das ist aber nicht so. Welcher Befehl fehlt noch?
Option Explicit

Private Sub Workbook_Open()
Dim i As Integer
 
  With Sheets(strJahr)
     .EnableSelection = xlUnlockedCells
     i = .Cells(.Rows.Count, "B").End(xlUp).Row
     .Activate
     .Cells(i + 1, 2).Select
  End With
End Sub

Und warum wird bei diesem Code trotzdem nachgefragt, ob ich speichern will, wenn ich die Datei schließe?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   
   '   strJahr = Year(Now) 
   Sheets(strJahr).Activate
   If ThisWorkbook.Saved = False Then
      Application.DisplayAlerts = False
      ThisWorkbook.Save
      Application.DisplayAlerts = True
   End If
End Sub
Top
#2
Hi Ralf,

mir nicht verständlich, daß dein Code trotz Option Explicit nicht meckert.


Code:
Private Sub Workbook_Open()
 Dim strJahr
 Dim i
 strJahr = "Tabelle1"
 With Sheets(strJahr)
    .EnableSelection = xlUnlockedCells
    i = .Cells(.Rows.Count, "B").End(xlUp).Row
    .Activate
    .Cells(i + 1, 2).Select
 End With
End Sub
So funktioniert es bei mir korrekt und die nächste leere Zelle in B wird aktiviert.
Mit freundlichen Grüßen  :)
Michael
Top
#3
Hi Michael,

(25.05.2017, 11:38)Zwergel schrieb: mir nicht verständlich, daß dein Code trotz Option Explicit nicht meckert.

jetzt geht es bei mir plötzlich auch wieder. Excel meckert nicht, weil strJahr eine Public-Const im Modul "mdl_Variablen" ist.

Zum zweiten Makro:
Wenn ich auf das Close-Kreuz drücke, wird die Mappe gespeichert, dann fragt Excel aber nach, ob die Datei gespeichert werden soll und dann wird sie bei "Ja" oder "Nein" geschlossen.


Weitere Auffälligkeit: wenn ich diese Datei aus einer anderen Datei heraus (mit dem dortigen Workbook_Open) öffne, wird in dieser Datei das Workbook_Open (wie oben gezeigt) nicht beachtet.
Top
#4
Moin Ralf!
Zu Deiner zweiten Frage aus der Eröffnung:
Ich nehme so etwas, dann wird problemlos ohne Nachfrage gepeichert.
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not Me.Saved Then Me.Save
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#5
Hi Ralf,

auch damit kommt bei mir eine Nachfrage.

I werd no narrisch! (österreichisch, weil ich grad 3sat Ö anschaue :) )

Wo könnte denn da noch was stehen, daß ein Speichern fordert?
Top
#6
Ohne Datei nur die Mutmaßung, dass noch etwas in DieseArbeitsmappe steht.

A pro pos Speichern:
Ich kümmere mit jetzt um =WECHSELN("Speichern";"r";"")

Heißt, ich werde jetzt die Speichen meines Fahrrads in Bewegung setzen. ;)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#7
Code:
Private Sub Workbook_Open()
  Application.goto Sheets(year(date)).cells(rows.count,1).end(xlup)
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#8
Gibt's etwas hier ?


Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

oder


Code:
Private Sub Workbook_AfterSave(ByVal Success As Boolean)

End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#9
Hallo Ralf,

(25.05.2017, 13:51)RPP63 schrieb: Ohne Datei nur die Mutmaßung, dass noch etwas in DieseArbeitsmappe steht.

Datei 1:Microsoft Excel Objekt DieseArbeitsmappe
Option Explicit 

Private Sub Workbook_Open()
  Dim Pfad As String
   
  With Sheets(strWetter)
     .EnableSelection = xlUnlockedCells
     i = .Cells(.Rows.Count, "B").End(xlUp).Row
     .Activate
     .Cells(i + 1, 2).Select
  End With
  Application.ScreenUpdating = False
  Pfad = ActiveWorkbook.Path
  Workbooks.Open Pfad & "\Wetterdaten-Stunde.xlsb"
  Application.ScreenUpdating = True
   
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   
  With Sheets(strWetter)
     .EnableSelection = xlUnlockedCells
     .Activate
     loLetzte = .Cells(Rows.Count, 2).End(xlUp).Row        ' letzte belegte Zelle in Spalte B
     Application.Goto .Cells(loLetzte, "B"), True    ' anspringen der letzten belegten Zelle
  End With
   
  Application.ScreenUpdating = False
  ThisWorkbook.Save
  Application.ScreenUpdating = True
End Sub



Datei 2, durch 1 geöffnet:Microsoft Excel Objekt DieseArbeitsmappe
Option Explicit 

Private Sub Workbook_Open()
   
  With Sheets(strJahr)
     .EnableSelection = xlUnlockedCells
     i = .Cells(.Rows.Count, "B").End(xlUp).Row
     .Activate
     .Cells(i + 1, 2).Select
  End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   
  '   strJahr = Year(Now)
'   Sheets(strJahr).Activate
'   If ThisWorkbook.Saved = False Then
'      Application.DisplayAlerts = False
'      ThisWorkbook.Save
'      Application.DisplayAlerts = True
'   End If

  If Not Me.Saved Then Me.Save

End Sub

'Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'   With Sheets("Ertrag PV-Anlage")
'      Call AllePivotTabellenaktualisieren
'   End With
'End Sub
'

Top
#10
Hi,

(25.05.2017, 19:05)snb schrieb:
Code:
Private Sub Workbook_Open()
 Application.goto Sheets(year(date)).cells(rows.count,1).end(xlup)
End Sub

ja, so geht es auch! Das habe ich jetzt verwendet.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste