PDA

Vollständige Version anzeigen : Fehlermeldung bei Select und Range


tmotion
19.03.2009, 07:29
Hiho,
hier eine kurze Frage.
Komischerweise bekomme ich beim Ausführen dieser 2 Befehlszeilen folgenden Fehler:
"Due Select-Methode des Range-Objektes konnte nicht ausgeführt werden"
Lasse ich eine der Zeilen weg, funktionieren sie im Einzelnen, warum nicht zusammen ?

Worksheets("Master").Activate
Range("A6:B8").Select

oder

Worksheets("Master").Select
Range("A6:B8").Select

Gruß,
Timo

myfake
19.03.2009, 07:45
Hallo Timo,

Deine beiden Codezeilen sind sicher in einem längeren Code integriert. Denn wenn man sie für sich alleine testet ...


Sub Test()
Worksheets("Master").Activate
Range("A6:B8").Select
End Sub

... funktioniert es ja.

Vielleicht kannst Du ja mal den gesamten Code posten.

cu
myfake

tmotion
19.03.2009, 07:51
Danke für die schnelle Antwort,

ich habe herausgefunden, dass das Problem, sobald ich zu einem anderen Sheet wechsel auftritt... Also wenn ich folgendes mache:

Worksheets("Start").Activate
Range("A6:B8").Select

funktioniert es, da "Start" oder mit Worksheets(1) es sich um die selbe Seite handelt. die bei den weiteren 3 Worksheets kommt diese Fehlermeldung.

Es funktioniert selbst so nicht:
---------------------------------------
Private Sub CommandButton7_Click()

Sheets(2).Select
Range("A6:B8").Select
End
End Sub
---------------------------------------
Was kann denn so böses an dem anderen Sheets sein, dass er sich nicht dahin traut?????

Vielen Dank schonmal,
Timo

tmotion
19.03.2009, 08:24
Ah, hab beim googlen die Antwort gefunden. Lag daran, dass ich die Funktion in ein Modul packen sollte, weil im Quellcode eines Datenblatts man nicht in ein anderes wechseln kann... Gut zu wissen:

http://www.*************************298574_0_0_asc.php

IngGi
19.03.2009, 09:46
Hallo Timo,

Lag daran, dass ich die Funktion in ein Modul packen sollte, weil im Quellcode eines Datenblatts man nicht in ein anderes wechseln kann... Gut zu wissen:
Dein Link wird von der Forumssoftware nicht vollständig wiedergegeben. Daher kann ich nicht nachsehen, was dort tatsächlich steht. Deine obige Aussage stimmt so aber nicht. Man kann auch in einem Makro, welches im Modul eines Tabellenblattes steht, auf ein anderes Tabellenblatt wechseln und dort einen Zellbereich auswählen. Folgender Code im Modul von Tabelle1 funktioniert einwandfrei:
Worksheets("Tabelle2").Activate
Worksheets("Tabelle2").Range("A1:C10").Select
Das Problem bei deinem Code besteht in der unvollständigen Angabe des Zellbereichs (Angabe ohne Bezug auf das Tabellenblatt). Wenn ich nur einen Zellbereich, ohne Bezug auf das Tabellenblatt, angebe, dann bezieht sich diese Angabe im Modul eines Tabellenblattes immer auf das Tabellenblatt, in dessen Modul sich der Code befindet. In jedem anderen Modul hingegen bezieht sich eine solche unvollständige Angabe auf das gerade aktive Tabellenblatt. Daher funktioniert dein Code in einem allgemeinen Modul, nicht aber im Modul eines Tabellenblattes.

Gruß Ingolf

m2r
31.03.2009, 11:25
Hi Timo,

wegen dem Zugriff auf ein anderes Worksheet hätte ich auch noch mal eine Frage.
Versuche über einen Commandbutton der auf dem Tabellenblatt "General" liegt, den folgenden Code auszuführen. Leider kommt es immer wieder an der Fett markierten Stelle zu einem Fehler während der Bearbeitung, so dass das Programm aussteigt.

Führe ich den Code direkt auf der Seite aus gibt es keine Probleme.

Funktionsweise des Codes:
1. Überschriften im Sheet IMPORT und EINKAUF werden verglichen
2. Bei Übereinstimmung soll der entsprechende Zellbereich aus dem Sheet IMPORT in das Sheet EINKAUF kopiert werden.

Irgendwie scheint meine Synthax falsch zu sein. Kann mir da vielleicht jemand helfen?

Gruß m2r


Private Sub cmd_Import_kopieren_Click()

'Variable benennen
Dim spalte, lspalte As Long
Dim zeile, lzeile As Long
Dim strSearch As String
Dim quelle As Range
Dim ziel As Range
Dim i, j, x As Long

'Ermittlung der letzten Spalte
lspalte = Worksheets("Import").Cells(1, Columns.Count).End(xlToLeft).Column

'Ermittlung der letzten Zeile
lzeile = Worksheets("Import").Cells(Rows.Count, 1).End(xlUp).Row


'Ermittlung der gleichen Spalte
For i = 1 To lspalte
For j = 1 To 220
For x = 7 To lzeile

Worksheets("Import").Activate
If Sheets("Import").Cells(1, i).Value = Sheets("Einkauf - Purchasing").Cells(1, j) Then

Worksheets("Import").Range(Cells(7, j), Cells(lzeile, j)).Select
Set quelle = Worksheets("Import").Range(Cells(x, i), Cells(x, i))
Set ziel = Worksheets("Einkauf - Purchasing").Cells(x + 2, j)
ziel.Value = quelle.Value

Else
End If
Next
Next
Next
End Sub

m2r
31.03.2009, 22:36
Hi,

könnte mir bitte einer mal erklären wie man verschiedene Arbeitsblätter ansprechen kann. Habe mir die Links usw. angesehen aber irgendwie stehe ich auf dem Schlauch. Wann nehme ich denn nu Select und wann Activate und wie müsste das dann im oben genannten Code richtig heißen.

Danke für die Hilfe.

Gruß m2r

jinx
01.04.2009, 05:12
Mon, m2r,

VBA beschwert sich über eine Selektion. ;)

Nein. ich vermute, dass Du Dich zu dem Zeitpunkt auf einer anderen Tabelle befindest und daher der Bezug zur Tabelle per Worksheets hergestellt wird, aber der Bezug zu den Cells-Angaben immer noch auf der aktiven Tabelle besteht. In diesem Fall würde ich auf die Selektion verzichten und die Set-Anweisung in eine With-Anweisung für die Tabelle einbinden...