# Arbeitsblatt indirekt bearbeiten mit VBA in Excel 2007



## godi (16 April 2008)

Hallo!

Ich möchte ein Arbeitsblatt mit einem Variablen Namen erstellen. Dies Funktioniert auch schon wunderbar.
Aber wenn ich in diesem Arbeitsblatt ein paar Zellen beeinflussen möchte dann weiß ich nicht wie ich dann so wie im Code "Tabelle3" den Namen angebe.
Ich habe da schon Variablen als Type Worksheet angelegt und mit denen herumprobiert aber bei mir hängt sich der Code immer bei .Add Type auf! :-(
Ich weiß leider nicht mehr weiter! Weiß jemand von euch wie das funktioniert?


```
Sub BlattErstellen()
Dim Blattname As String

Blattname = InputBox("Geben sie einen Blattnamen ein")
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Blattname & " -Kopf"

With [COLOR=Red]Tabelle3[/COLOR].Range("A1:A10").Validation
  .Delete
  .Add Type:=xlValidateTextLength, _
   AlertStyle:=xlValidAlertStop, _
   Formula1:="1", _
   Formula2:="20"
  .InputTitle = "Namen eingeben"
  .ErrorTitle = "Kein gültiger Namen!"
  .InputMessage = "Maximal 20 Zeichen"
  .ErrorMessage = "Sie müssen einen Namen mit einer maximalen Länge von 20 Zeichen eingeben."
End With

End Sub
```

godi


----------



## rkoe1 (16 April 2008)

Hallo,

in meiner VBA habe ich es so geschrieben - 

With Worksheets ("LOGGING").Range(.Cells(11,2) usw.

Ich hoffe es hilft dir weiter.

Viele Grüße
rkoe1


----------



## zotos (16 April 2008)

Wenn das der original Code ist. Kannst Du ja frech weg mit

```
With ActiveSheet.Range("A1:A10")
```

weiter machen.


----------



## godi (16 April 2008)

Hallo!

Jetzt bin ich gerade draufgekommen das es nicht an dem Code gelegen hat den ich oben gepostet habe! 
Sondern ich habe zwischen Arbeitsblatt erstellen und Zellen bearbeiten noch ein .Protect drinnen gehabt.


```
Sub BlattErstellen()
Dim Blattname As String

Blattname = InputBox("Geben sie einen Blattnamen ein")
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Blattname & " -Kopf"

'Erste Zeile erstellen
With ActiveSheet
  .Unprotect
  .Cells.Locked = False
  .Range("A1").Value = "Spalte 1"
  .Range("B1").Value = "Spalte 2"
  .Range("C1").Value = "Spalte 3"
  .Cells(1, 1).Locked = True
  .Cells(1, 2).Locked = True
  .Cells(1, 3).Locked = True
  .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With


'Zellen bearbeiten
With ActiveSheet.Range("A2:A10").Validation 'Worksheets(Blattname & " -Kopf").Range("A1:A10").Validation
  .Delete
  .Add Type:=xlValidateTextLength, _
   AlertStyle:=xlValidAlertStop, _
   Formula1:="1", _
   Formula2:="20"
  .InputTitle = "Namen eingeben"
  .ErrorTitle = "Kein gültiger Namen!"
  .InputMessage = "Maximal 20 Zeichen"
  .ErrorMessage = "Sie müssen einen Namen mit einer maximalen Länge von 20 Zeichen eingeben."
End With

End Sub
```

Ich war der Meinung dass das .Protect nur auf die 3 Zellen wirkt und das ich danach alle anderen Zellen noch beliebig bearbeiten kann. Das war leider nicht so!
Habe jetzt das von der Mitte nach unten Verschoben und so Funktioniert es!  

godi


----------

