Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1696to1700
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellenbezug mit Variablen

Zellenbezug mit Variablen
25.06.2019 07:29:19
Leon.DerProf
Immer, wenn ich denke ich habe VBA einigermaßen verstanden, kommt etwas was mich komplett zweifeln last.
Ich bin verzweifelt, denn es müsste funktionieren.
Folgender Code
Sub Komplex2()
'Für die erste Prozedur
Dim festNr As Long
Dim findenNr As Range
Dim start As Long
Dim findenstart As Range
Dim ende As Long
Dim findenende As Range
Dim fte As String
Dim Maßnahme As String
'Für die zweite Prozedur
Dim sh As Shape
Dim rng As Excel.Range
Dim shp As Excel.Shape
'In der jeweiligen Reihe des Pfeils wird die Nr. gespeichert
festNr = ActiveCell.Offset(0, -6).Value
start = ActiveCell.Offset(0, -5).Value
ende = ActiveCell.Offset(0, -4).Value
fte = ActiveCell.Offset(0, -3).Value
Maßnahme = ActiveCell.Offset(0, -2).Value
MsgBox start
MsgBox ende
MsgBox fte
MsgBox Maßnahme
'Balkenplan wird ausgewählt
With Worksheets(2)
Set findenstart = .Cells(4, start - .Range("D4").Value + 4)
Set findenende = .Cells(4, ende - .Range("D4").Value + 4)
Set findenNr = Range("Tabelle1[Nr.]").Find(what:=festNr, LookIn:=xlValues)
End With
MsgBox findenNr.Row
MsgBox findenstart.Column
MsgBox findenende.Address
'___________________________________
Worksheets(2).Cells(findenNr.Row, findenstart.Column).Select

Ich habe dazwischen MsgBox geschaltet, um zu sehen, ob die richtigen Zahlen rausgegeben werden und eigentlich müsste es laut der VBA-Logik mit der letzten Zeile funktionieren.
Cells ware demnach z.B. Cells(5,6) da ja laut der MsgBox findenNr.Row = 5 ist und findenstart.column = 6.
Was um Himmelswillen ist denn falsch an meinem Code, ich verstehe es wirklich nicht und google konnte auch nicht helfen. Ich habe verschiedene Schreibweisen für Cells ausprobiert. Mit Anführungsstrichen und ohne, oder Und-Zeichen. Nichts funktioniert.
Laufzeit-Fehler 1004.
Dieser Link hier hilft mir nicht, aber ich lasse mich gerne zur Lösung führen entweder direkt oder indirekt, Hauptsache ich verstehe endlich, was VBA von mir will.
https://docs.microsoft.com/de-de/office/vba/api/excel.worksheet.cells
Besten Dank

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellenbezug mit Variablen
25.06.2019 07:46:47
Beverly
Hi,
wenn du eine Zelle selektieren willst, muss das betreffende Tabellenblatt aktiv sein - richtig wäre also:
Worksheets(2).Activate
Cells(findenNr.Row, findenstart.Column).Select

Oder man benutzt die Variante mit Application.Goto
Application.Goto reference:=Worksheets(2).Cells(findenNr.Row, findenstart.Column)


AW: Zellenbezug mit Variablen
25.06.2019 07:54:49
Leon.DerProf
Das habe ich durch Trial und Error ausprobiert und bin tatsächlich zu deiner ersten Lösung gerade gekommen und wollte den Thread schließen lassen, weil das Problem gelöst wurde.
Ich wusste aber nicht warum das so ist, weil meiner meinung nach ein Activate dazwischen nicht notwendig ist, weil ich es bei einem leeren Blatt zuvor ausprobiert habe und mir einbilde, dass die Formulierung so geklappt hat. Aber gerade nochmal probiert und es funktioniert auch so nicht. VBA macht mich manchmal fertig.
Aber durch dich habe ich jetzt eine Erklärung.
Danke
Anzeige
AW: Zellenbezug mit Variablen
25.06.2019 08:19:48
Beverly
Zitat:
  • "weil ich es bei einem leeren Blatt zuvor ausprobiert habe und mir einbilde, dass die Formulierung so geklappt hat"

  • Klar funktioniert Cells(findenNr.Row, findenstart.Column).Select, aber nicht mit dem Bezug zu einem anderen Tabellenblatt sondern eben nur, wenn das betreffende Tabellenblatt (gleichgültig ob leer oder nicht) gerade das aktive ist.
    Das ganze lässt sich übrigens mit dem Makrorekorder aufzeichen und in diesem Fall hat der Makrorekorder auch mal zu 100% Recht.


    AW: Zellenbezug mit Variablen
    25.06.2019 08:20:46
    Daniel
    Naja, dein Code funktioniert natürlich, wenn zufälligerweise das genannte Tabellenblatt auch das aktive ist.
    Erst wenn ein anderes Blatt aktiv ist, kommt der Fehler.
    Gruß Daniel
    Anzeige

    308 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige