AW: Kleines Codeproblem
04.10.2005 06:43:26
Erich
Hallo Egon,
du bekommst bei der Anweisung wb.ws.[A1] = 100 den Fehler 438:
"Objekt unterstützt diese Eigenschaft oder Methode nicht"
Die Hilfe beschreibt den Grund:
"Sie haben eine Methode oder Eigenschaft angegeben, die für dieses Automatisierungsobjekt nicht existiert."
wb ist ein Workbook. Nach wb. muss eine Workbook-Eigenschaft oder Workbook-Methode stehen. ws ist aber weder eine Eigenschaft noch eine Methode, sondern ein Objekt (der Klasse Worksheet). Daher der Fehler.
Noch zwei Bemerkungen zu deinem Code:
Mit Set ws = Sheets("Schicht") weist du der Variablen ws das Blatt "Schicht" der gerade aktuellen Mappe zu. Aktiv kann aber gerade eine andere Mappe als ThisWorkbook (die Mappe, in der dieser Code steht) sein.
ws.[A1] = 100 ist eine Kurzschreibweise für ws.Evaluate("A1") = 100. Schneller würde VBA die Anweisung ws.Cells(1, 1) = 100 verarbeiten.
Ein paar Beispiele:
Sub test()
Dim wb As Workbook, ws As Worksheet, wsA As Worksheet
Set wb = ThisWorkbook
Set ws = Sheets("Schicht") ' ist ein Sheet im ActiveWorkbook
' Set ws = wb.Sheets("Schicht") ' willst du vermutlich
ws.[A1] = 10
ws.Evaluate("A2") = 20
ws.Cells(3, 1) = 30
wb.Sheets("Schicht").[A4] = 40
wb.Sheets.Item("Schicht").[A5] = 50
wb.Sheets.Item("Schicht").Evaluate("A6") = 60
' wb.ws.[A7] = 70 ' funzt nicht
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort