Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
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

activesheet.cells(array?)

activesheet.cells(array?)
24.04.2020 16:53:43
Joseph
Hallo Zusammen,
Bisher konnte ich mir anhand vieler TUTs und learning by doing vieles selber beibringen.
Allerdings stehe ich gerade vor einem Problem, bei dem ich eure Hilfe benötige:
folgende Situation:
ich kann doch bei activesheet.cells(x,y) auch eine variable einsetzen.. z.B. :
dim var as string
var = "1,6"
if activesheet.cells(var) = "" then
msgbox "hallo"
das funktioniert auch tadellos... aber mit Arrays funktioniert das leider nicht:
dim var(2) as string
var(0) = "1, 6"
var(1) = "1, 5"
var(2) = "1, 4"
if activesheet.cells(var(2)) = "" then
msgbox "hallo"
was mache ich falsch?!? Laufzeitfehler 5

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: activesheet.cells(array?)
24.04.2020 16:57:19
Hajo_Zi
Cells verlangt immer 2 Angaben Zeile und Spalte

AW: activesheet.cells(array?)
24.04.2020 16:59:31
Joseph
gebe ich ja aus, in dem ich den string "1,6" nenne... das funktioniert auch so als variable... aber nicht als array.... ich denke es liegt an den klammern.. habe aber keine alternative.. ihr vielleicht..?
AW: activesheet.cells(array?)
24.04.2020 17:01:30
Hajo_Zi
Du ahst Nur einen Wert übergeben 1,6 ich vernmute das rundet Excel zu 2 also Zeile 2. Die Splatze wurde nicht angegeben.
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
änderrn.
Das ist nur meine Meinung zu dem Thema.
Gruß Hajo
Anzeige
AW: activesheet.cells(array?)
24.04.2020 17:03:12
Mullit
Hallo,
mal ne Gegenfrage, was glaubst Du denn, welche Zelle Du mit activesheet.cells("1,6") ansprichst...!?
Gruß, Mullit
AW: activesheet.cells(array?)
24.04.2020 17:05:01
Joseph
Zeile 1 Spalte 6 ?!
AW: activesheet.cells(array?)
24.04.2020 17:07:31
Joseph
korrekterweise würde es ja nach übergabe der varable so aussehen :
activesheet.cells(1, 6) das funkt auch mit ner variable aber nicht mit nem array...
AW: activesheet.cells(array?)
24.04.2020 17:06:22
Hajo_Zi
mit cells(1,6)
Zeile 1 Spalte 6
Gruß Hajo
AW: activesheet.cells(array?)
24.04.2020 17:09:07
Joseph
kennt denn einer von euch ne variante wie ich in der cells(y,x) ein array anwenden kann..?
das war ja jetzt die grundfrage immernoch =)
Anzeige
AW: activesheet.cells(array?)
24.04.2020 17:10:35
Hajo_Zi
cells(arr(0,1),arr(0,2))
Gruß Hajo
AW: activesheet.cells(array?)
24.04.2020 17:14:04
Joseph
ich bekomme dadurch den laufzeitfehler 13, typen unverträglich
AW: activesheet.cells(array?)
24.04.2020 17:16:06
Hajo_Zi
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
änderrn.
Das ist nur meine Meinung zu dem Thema.
Gruß Hajo
Anzeige
Cells(Array) ist Quatsch...
24.04.2020 17:15:08
EtoPHG
Hallo Joseph,
Das ist doch völliger Quatsch! (Excel gut?) ...und NEIN kann man nicht anwenden!
Die Referenzierung basiert auf zwei unabhängigen, optionalen Variablen und nicht auf einem Array.
Das "1,6" bei Dir funktioniert, ist reiner Zufall, weil du als Dezimaltrenner das Komma für Deutschland eingestellt hast. Dieser String wird auf 2 gerundet und ergibt die Addresse B1 und nicht wie du erwartest F1.
Was bitte soll den hier ein Array bringen?
Gruess Hansueli
AW: activesheet.cells(array?)
24.04.2020 17:18:09
onur

varX(0)=3:varY(0)=5
ActiveSheet.Cells(varX(0),varY(0))

oder
var(0,0)=3:var(0,1)=5
ActiveSheet.Cells(var(0,0),var(0,1))

Anzeige
...und hat den Vorteil? (owT)
24.04.2020 17:33:48
EtoPHG

AW: ...und hat den Vorteil? (owT)
24.04.2020 17:51:46
onur
Kannst du mich nicht ENDLICH mal in Ruhe lassen ?
Hast du keine anderen Hobbies, als Beiträge ANDERER Helfer zu kommentieren ?
DU NERVST - Gehe mal zum Therapeuten! Ist doch langsam peinlich!
AW: ...und hat den Vorteil? (owT)
24.04.2020 17:56:07
Daniel
Es wäre schon schön Onur, wenn du deine Ideen auch etwas erklären würdest
ein dahingeklatschter Code hilft niemanden, vor allem nicht einem VBA-Neuling
Gruß Daniel
AW: ...und hat den Vorteil? (owT)
24.04.2020 18:03:58
onur
Sorry Daniel, ich dachte, es wäre alles selbsterklärend, vor allem, für Jemanden, der sich als "VBA-gut" einschätzt.
Also, joseph:
Wenn du statt
var(0) = "1, 6"
var(1) = "1, 5"
var(2) = "1, 4"
entweder
varX(0) = 1:varY(0) = 6
varX(1) = 1:varY(1) = 5
varX(2) = 1:varY(2) = 4
oder
var(0,0) = 1:varY(0,1) = 6
var(1,0) = 1:varY(1,1) = 5
var(2,0) = 1:varY(2,1) = 4
nimmst, hast du deine gewünschte "Array-Version".
Anzeige
ich hab nicht kommentiert, sondern eine
24.04.2020 18:09:14
EtoPHG
Frage gestellt, onur
Ich kann mir keine Anwendung deines Konstrukts vorstellen. Du verwendest ja auch zwei von einander unabhängige Arrays und nicht einen, wie es sich der TE vorstellt. Meine Frage war keine Kritik. Vielleicht kannst Du dir ja eine Anwendung vorstellen?
Gruess Hansueli
AW: ich hab nicht kommentiert, sondern eine
24.04.2020 18:15:16
onur
Dann bitte ich um Entschuldigung, Hansueli.
Ich meinte es eigentlich so (etwas anders, als seine Lösung):

varX(0) = 1:varY(0) = 6
varX(1) = 1:varY(1) = 5
varX(2) = 1:varY(2) = 4
if activesheet.cells(varX(2),varY(2)) = "" then msgbox "hallo"
oder

var(0,0) = 1:varY(0,1) = 6
var(1,0) = 1:varY(1,1) = 5
var(2,0) = 1:varY(2,1) = 4
if activesheet.cells(var(2,0),var(2,1)) = "" then msgbox "hallo"

Anzeige
AW: activesheet.cells(array?)
24.04.2020 18:21:22
Daniel
Hi
dass du bei den Arrays den Fehler bekommst, liegt nicht am Array, sondern daran, dass du bei den Arrays noch ein Leerzeichen nach dem Komma eingefügt hast und beim ersten Versuch nicht.
1. Einzelwert: Var="1,6"
2. Array var(0)="1, 6"
jetzt ist es so, das Cells als ersten Parameter unbedingt eine Ganzzahl benötigt (Zeilen, oder Positionsnummer), du lieferst aber einen Text (wegen der Anführungszeichen).
VBA haut dir das aber nicht sofort als Fehler um die Ohren sondern versucht erstmal, den Text in eine Zahl zu wandeln und wenn möglich mit dieser weiter zu arbeiten.
nur wenn der Text nicht in eine Zahl wandelbar ist, bekommst du einen Fehler.
und so ist auch dein Ergebnis: "1,6" wird als Kommazahl erkannt und in die Zahl 1,6 gewandelt.
aufgerundet zur Ganzzahl ergibt das im Code

Cells(2)
und das ist korrekter Code.
anders sieht es mit dem "1, 6" aus. durch das Leerzeichen ist dieser Text nicht mehr als Zahl erkennbar und kann daher nicht gewandelt werden. VBA muss daher mit einem Fehler abbrechen.
falls du irgendwie vorhattest, das aus dem Text "1, 6"das Wertpaar 1 und 6 wird, dann vergiss das.
es ist nicht möglich, Text in Anführungszeichen bzw Textvariablen mit VBA-Quellcode zu verbinde, so dass dieser ausgeführt werden kann. Text und Quellcode sind komplett von einander unabhängig und nicht miteinander zu verbinden.
wenn du hier mit einer Variable arbeiten willst, nimm Range statt Cells:
dim var(2) as string
var(0) = "F1"
var(1) = "E1"
var(2) = "D1"
if activesheet.Range(var(2)) = "" then
msgbox "hallo"
gruß Daniel
Anzeige
AW: activesheet.cells(array?)
24.04.2020 19:36:22
Daniel
ok, vieles wurde schon geschrieben.
die Normale Version von Cells braucht zwei Eingabe Parameter, Zeilennummer und Spaltennummer.
du kannst diese zwar gemeinsam in eine einer Variable Speichern, aber für die Eingabe in Cells musst du die Werte wieder auftrennen und als zwei Werte angeben.
wäre beispielsweise so möglich:
var(2) = Array(1, 6)
..Cells(Var(2)(0), Var(2)(1))...
wenn du bei Cells aber nur einen Einzigen Wert angeben willst, geht das auch, dann musst du die Positionsnummer angeben.
hierbei werden die Zellen zeilenweise von links nach rechts durchnummeriert, dh die Zeilennummer berechnet sich nach diesem Schema:
Spaltennummer + (Zeilennummer - 1) * Anzahl_Spalten
dh in deinem Fall:
var(0) = 6
var(1) = 5
var(2) = 4
...Cells(var(2))...
gruß Daniel
Anzeige
AW: activesheet.Range(array?)
25.04.2020 14:32:53
GerdL
Moin,
tauscht halt das Objekt u. die Indizes beim Crashkurstest.
Sub Teste()
Dim var(2) As String
var(0) = "F1"
var(1) = "E1"
var(2) = "D1"
Range(var(1)).Select
End Sub

Gruß Gerd
AW: activesheet.cells(array?)
27.04.2020 21:34:06
Barbara
Hi Joseph
"cells" interpretiert den ersten Wert als "var(2)".
Um die Bestandteile so liefern zu können, musst Du den Inhalt von var(2) aufbrechen: Split(var(2) ...
und definierst das Komma als Trennzeichen: Split(var(2), ",")
Damit erhälst Du ein eindimensionales Array mit in diesem Fall zwei Teilen: 1 und 4.
Teile = Split(var(2), ",")
Die einzelnen Teile dieses Arrays erhälst Du mit Teile(0) und Teile(1).
Deine Zeile lautet dann
Dim Teile
Teile = Split(var(2), ",")
If ActiveSheet.Cells(Teile(0), Teile(1)) = "" Then MsgBox "hallo"

Oder ohne Teile direkt so:
If ActiveSheet.Cells(Split(var(2), ",")(0), _
Split(var(2), ",")(1)) = "" Then MsgBox "hallo"
LGB
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige