# Zugriffszähler



## gvlms (30. Mai 2005)

Hallo!

Ich möchte in Excel ein Zugriffszähler einrichten. Er sollte wenn möglich die 
Anzahl der Zugriffe und das Datum des letzten Zugriffes ausgeben.
Ich dachte da an so etwas:
In einem Feld steht anfangs die 0. Diese zahl wird eingelesen (durch Makro) durch einen Integer, um 1 erhöht und in dieses Feld wieder eingetragen. Beim nächsten Einlesen wird diese Zahl wieder erhöht, etc.
Allerdings weiß ich nicht, wie man das einliest.

ansonsten hab ich so programmiert, wie ich es aus java kannte (mit VBA habe ich noch nie vorher gearbeitet!):

Sub counter()

Dim counter As Integer

counter = EINLESEN!
counter = counter + 1

    Range("A1").Select
    ActiveCell.FormulaR1C1 = counter

End Sub


----------



## Orakel (30. Mai 2005)

Hi, 

also das sieht ja schon mal recht gut aus. Ich würde das ganze allerdings wie folgt lösen:

```
Sub counter()
  Range("A1").Value = Range("A1").Value + 1
End Sub
```

Gruß
Das Orakel


----------



## gvlms (30. Mai 2005)

Moah, det  ja richtig gut! 

Und, haste auch ne Idee wegen dem letzten Zugriffsdatum? 

ansonsten erstmal ein dickes Dankeschööön!

edit:
Noch ne Frage: Irgendwie zählt der nicht automatisch, wenn ich die Datei neu öffne. Muss der Makro irgendwie an eine Bestimmte Stellen (z.b. unter "dieseArbeismappe")? Wenn ja, dann muss ich ja noch angeben, dass er es meinetwegen ins Tabellenblatt 1 ("Tabelle1") schreiben soll.


----------



## Orakel (30. Mai 2005)

Hi

In "Diese Arbeitsmappe" das Objekt "Workbook" und das Event "Activate"

Zugriffsdatum muss ich erst ma passen. Würde im obigen Event einfach das Datum in eine Zelle schreiben.

Gruß
Das Orakel


----------



## gvlms (31. Mai 2005)

Orakel hat gesagt.:
			
		

> In "Diese Arbeitsmappe" das Objekt "Workbook" und das Event "Activate"


mh...

Ich hab in "DieseArbeitsmappe" geschrieben:
Workbook("Tabelle1").Activate

und in "Tabelle1" hab ich den Sub counter() gemacht.  aber nicht. Oder sind die Befehle flasch? Ich weiß nicht recht, was du meinst...


----------



## Orakel (31. Mai 2005)

Hi
Packe doch einfach diesen Code


```
Private Sub Workbook_Open()
    Range("A1").Value = Range("A1").Value + 1
    Range("B1").Value = Date
    Range("C1").Value = Time
End Sub
```
In das "DieseArbeitsmappe" Objekt

Gruß
Das Orakel


----------



## gvlms (31. Mai 2005)

TOLL Es klappt! Ich danke Dir vielmals!


----------



## gvlms (31. Mai 2005)

Oh mir ist noch was eingefallen:

Kann ich nicht das alte Datum erlesen, bevor ich es mit 
    Range("B1").Value = Date
wieder überschreibe?

Aber wie gesagt, das mit dem "Einlesen" scheint ein Problem zu werden, oder?

Edit: Es gibt noch einweiteres Problemchen... Das mit dem Counter geht ja nur, für das Registerblatt, welches am Anfang geöffnet wird. Aber es wäre besser, wenn eine bestimmt Seite aufgerufen wird und man das alles dort reinschreibt...


----------



## Orakel (31. Mai 2005)

Was genau hast Du vor

Ein fragendes Orakel


----------



## gvlms (31. Mai 2005)

Das mit dem letzten Datum hab ich gerade gelöst:
Private Sub Workbook_Open()

Dim datum_alt As Date

    datum_alt = Range("B1").Value

    Range("A1").Value = Range("A1").Value + 1
    Range("B1").Value = Date
    Range("C1").Value = Time
    Range("B2").Value = datum_alt

End Sub

Was ich genau vor habe? Na wir haben da so ein (doofes) Info-Projekt, und ich wollte ein Registerblatt "Druckblatt" anlegen. Da soll halt das ganze rein.


----------



## Orakel (31. Mai 2005)

Na dann viel Spass mit dem Teil.
aber machs doch nicht so kompliziert:

```
Private Sub Workbook_Open()
    Range("A1").Value = Range("A1").Value + 1
    Range("B2").Value = Range("B1").Value
    Range("B1").Value = Date
    Range("C2").Value = Range("C1").Value
    Range("C1").Value = Time
End Sub
```

Gruß
vom Orakel


----------



## gvlms (31. Mai 2005)

danke dir!


----------



## gvlms (1. Juni 2005)

Ach Mensch, je mehr ich mich damit beschäftige, desto mehr fällt mir ein, was ich noch machen könnte...

In dieser Arbeitsmappe soll der Zugriffsbereich (nicht die Maus, sondern die Markierung der Zellen) eingeschränkt sein.
Der Prof hat uns folgenden Befehl dafür hinterlassen:

Worksheets("Tabelle1").ScrollArea = "a1:d13"

Soweit in Ordnung. Aber was ist, wenn ich keinen Bereich, sondern nur einzelne Zellen zulassen möchte? Um genau zu sein, nur 2 Zellen, die aber nicht nebeneinander liegen. Bsp. a1 und c10

Wollte deswegen nicht extra ein neues Thema eröffnen... 
Jedenfalls: Wie geht das!


----------



## duckdonald (1. Juni 2005)

Hi,

wenn du die Zelleneigenschaften dieser beiden Zellen aufrufst und im Register "Schutz" das Häckchen vor "gesperrt entfernst" dann kannst du mit "Extras->Schutz->Blatt schützen" ein Passwort festlegen (nicht unbedingt notwendig)
In den weiteren Optionen dieses Fensters kannst du festlegen was Ausgewählt und verändert werden darf.


----------



## Orakel (1. Juni 2005)

Hi,

IMHO geht das mit der Eigenschaft ScrollArea nicht.

Gruß
Das Orakel

edit: Der Hinweis von DuckDonald könnte die Lösung sein


----------

