So funktioniert JustAnswer:
  • Fragen Sie einen Experten
    Tausende Experten in über 200 Kategorien.
  • Erhalten Sie eine professionelle Antwort
    Per E-Mail oder sofortiger Benachrichtigung, während Sie auf unserer Website warten. Stellen Sie ggf. weitere Anschlussfragen.
  • 100%ige Zufriedenheit garantiert
    Bewerten Sie die erhaltene Antwort.
Stellen Sie Ihre Frage an Dr-Ing-Singer.
Dr-Ing-Singer
Dr-Ing-Singer, Dr. -Ing.
Kategorie: Programmierung
Zufriedene Kunden: 49
Erfahrung:  Master of Engineering and Computer Science und Diplomingenieur der Luft- und Raumfahrttechnik
61769379
Geben Sie Ihre Frage in der Kategorie Programmierung hier ein
Dr-Ing-Singer ist jetzt online.

Ich benutze Excel 2k mit VBA und möchte Spalten über Zahlen

Beantwortete Frage:

Ich benutze Excel 2k mit VBA und möchte Spalten über Zahlen ansprechen mit Cells.
Mein einfaches Programm zum Testen:
Sub Test()
Worksheets("ImportWL2").Activate
Range(Cells(2, 2)).Activate 'Zelle B2
End Sub
Das Beispiel stammt aus der Excel-Hilfe. Bei der Range-Anweisung kommt die Fehlermeldung:
Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen.
Was ist falsch?
Gepostet: vor 7 Jahren.
Kategorie: Programmierung
Experte:  Dr-Ing-Singer hat geantwortet vor 7 Jahren.

Sehr geehrter Ratsuchender,

 

ich versuche Ihnen den Sachverhalt am folgenden Excell-VBA-Beispiel zu erläutern:

Attachment: 2012-02-03_184931_cellrange.xls

 

1. Tragen Sie in die Zelle "A1" eine Zahl ein, wie z.B. 1000

2. Erstellen Sie mit dem Steuerelemente-Toolbox einen Knopf (button)

3. Das nachfolgende Makro1 ist dem Knopf zugeordnet und schreibt den Zelleninhalt in die Zelle "C5"

 

Makro1:

 

Private Sub CommandButton1_Click()

Dim ws As Worksheet
Dim Zahl As Integer

Set ws = Worksheets("Tabelle1")
ws.Activate
Range("A1").Select
Selection.Copy
Range("C5").Select
ActiveSheet.Paste

End Sub

 

 

 

Das Ganze geht auch mit Cell, Makro2:

 

Private Sub CommandButton2_Click()

Dim ws As Worksheet
Dim Zahl As Integer

Set ws = Worksheets("Tabelle1")
ws.Cells(5, 3).Select
Selection.Copy
'Range("A2").Select
ws.Cells(1, 2).Select 'selektiert B1
ActiveSheet.Paste

End Sub

 

Sie können also für ein und dasselbe Cells oder Range verwenden, getrennt oder kombiniert. Ich hatte auch mal das Problem, dass Range nicht erkannt wurde, jedoch durch die richtigen Deklarationen ging es dann wieder.

 

Ich hoffe ich konnte Ihnen weiterhelfen und bitte Sie meine Antwort zu akzeptieren.

Kunde: hat geantwortet vor 7 Jahren.

Vielen Dank für Ihre Antwort.

Wenn das Copy und Past im aktuellen Blatt ausgeführt wird, funktioniert Ihr Beispiel.

Ich möchte aber von einem anderen Blatt Daten verwenden.

Wenn man Über mehrere Blätter arbeitet, muß nach meiner Erfahrung der ProgrammCode im Modul stehen.

Ich habe jetzt im Blatt Tabelle2 eine Schaltfläche mit einem Aufruf von Sub Test(), das im Modul1 steht:

Sub Test()

Dim ws As Worksheet
Set ws = Worksheets("Tabelle1")
ws.Cells(3, 3).Select 'Zelle C3
Selection.Copy
ws.Cells(1, 2).Select 'Zelle B1
ActiveSheet.Paste

End Sub

Da dabei das Copy/Paste nicht im aktuellen Arbeitsblatt Tabelle2 ausgeführt wird, sondern in Tabelle1, kommt eine Fehlermeldung: Laufzeitfehler '1004'

Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.

 

Was ich aber wirklich benötige ist noch einen Tick anders:

das Copy muss in Tabelle1 erfolgen, das Paste in Tabelle2.

 

Ich denke, jetzt ist das Problem vollständig dargestellt, aber vorher habe ich ja nicht begriffen, woher das Problem kommt.

 

Experte:  Dr-Ing-Singer hat geantwortet vor 7 Jahren.

Hallo,

 

das liegt wohl daran, dass Sie das entsprechende Arbeitsblatt vor dem Einfügen nicht aktivieren.

 

Attachment: 2012-02-04_130940_cellrange.xls

 

Makro2 (geändert):

Private Sub CommandButton2_Click()

Dim ws As Worksheet
Dim Zahl As Integer

Set ws = Worksheets("Tabelle1")
ws.Cells(5, 3).Select
Selection.Copy

Set ws = Worksheets("Tabelle2")
ws.Activate
'Range("A2").Select
ws.Cells(1, 2).Select 'selektiert B1
ActiveSheet.Paste

End Sub

 

Ich hoffe ich konnte Ihnen weiterhelfen und bitte Sie meine Antwort zu akzeptieren.

 

Experte:  Dr-Ing-Singer hat geantwortet vor 7 Jahren.

Hallo,

 

gab es noch Schwierigkeiten?

Kunde: hat geantwortet vor 7 Jahren.

Vielen Dank XXXXX XXXXX es geht jetzt alles. Ich hatte allerdings noch Probleme mit Zellbereichen gehabt, aber das habe ich nach Ihren Einführungen allein gelöst.

Das ist nur der Grund, warum Sie solange nichts mehr von mir gehört haben.

Ich bitte um Verständniss. Habe schon wegen anderer Belastungen seit 3 Tagen keine eMail mehr gelesen.

Ich habe noch ein Netzwerkproblem. Können Sie daraus einen neuen Vorgang machen? Oder geb ich das ganz normal ein?

Ich glaube, Sie müssen jetzt noch einmal antworten, damit ich für diesen Vorgang auf Akzeptieren klicken kann.

Experte:  Dr-Ing-Singer hat geantwortet vor 7 Jahren.

Hallo,

 

das freut mich, dass ich Ihnen helfen konnte. Soweit ich weiß, hat jede Antwort einen "Akzeptieren" Knopf.

 

Sollten Sie weitere VBA Probleme haben stehe ich Ihnen gerne zur Verfügung.

 

 

Dr-Ing-Singer und weitere Experten für Programmierung sind bereit, Ihnen zu helfen.