Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1288to1292
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

VBA - Probleme mit Range.Value

VBA - Probleme mit Range.Value
02.12.2012 12:28:39
JörgS
Hallo,
ich bin absoluter Neuling was VBA angeht und schon beginnen die ersten Schwierigkeiten. Ich zerbreche mir den Kopf, warum klappt es mit einer einzelnen Zelle und warum nicht mit mehreren Zellen. Einfaches Beispiel (Summenbildung):
klappt:
Sub Macro19()
Dim x As Integer
Dim y As Integer
Dim z As Integer
x = Sheets("Tabelle2").Range("A2").Value
y = Sheets("Tabelle2").Range("B2").Value
z = x + y
Sheets("Tabelle2").Range("C2").Value = z
End Sub

klappt nicht:
Sub Macro20()
Dim x As Integer
Dim y As Integer
Dim z As Integer
x = Sheets("Tabelle2").Range("A2:A8").Value
y = Sheets("Tabelle2").Range("B2:B8").Value
z = x + y
Sheets("Tabelle2").Range("C2:C8").Value = z
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Probleme mit Range.Value
02.12.2012 12:33:44
Peter
Hallo Jörg,
mehrere Zellen kannst Du nicht in eine Integer-Variable speichern.
Du könntest mit Set vTemp = Sheets("Tabelle2").Range("A2:A8").Value
schreiben, wenn vTemp als Variant definiert wäre und das dann als Array auswerten.
Gruß Peter

AW: VBA - Probleme mit Range.Value
02.12.2012 13:25:24
JörgS
Hallo Peter,
Danke für deine schnelle Antwort. Das es mit mehreren Zellen als Typ "Integer" nicht möglich ist, habe ich jetzt verstanden, bloß mit der Eingabe Set vTemp (Dim vTemp As Variant) und mit der Array Auswertung noch nicht so richtig. Ist es möglich den Code kurz aufzuschreiben, wenn es nicht so viel Arbeit macht.
Gruß
Jörg

Anzeige
AW: VBA - Probleme mit Range.Value
02.12.2012 14:18:06
Peter
Hallo Jörg,
lass den Set-Befehl einmal weg und versuch es so:
Option Explicit
Public Sub Test()
Dim vTemp  As Variant
Dim iTemp  As Integer
vTemp = ThisWorkbook.Worksheets("Tabelle1").Range("A2:A8")
For iTemp = LBound(vTemp) To UBound(vTemp)
MsgBox vTemp(iTemp, 1)
Next iTemp
End Sub

Gruß Peter

Was soll das wdn? 1 Anzeige jeder 1zelnen ...
02.12.2012 15:01:09
Luc:-?
…Zelle, Peter?
Das hat doch gar nichts mit Datenfeldbildung zu tun! Und falls du meinst, statt MsgBox könnte ja ein Einlesebefehl in ein DFeld-Element stehen, dann hat das mit deiner ursprgl AW nichts mehr zu tun, weil dann das ganze DFeld auch als Integer vordefiniert sein dürfte/müsste und kein Variant mehr wäre. Es gibt da nämlich einen gewissen Unterschied zwischen einem DFeld vom Typ Variant (oder eben irgendeinem anderen) und einem Variant, also einer als Variant deklarierten Variable (auch bei Deklaration ohne Typ!), die alles beinhalten kann, auch ein Datenfeld beliebigen Untertyps. Darauf schien deine ursprgl AW hinauszulaufen.
Ein solches Datenfeld kann aber einfacher erzeugt wdn, nämlich mit WorksheetFunction.Transpose, ganz ohne Schleife. Natürl muss/kann da noch einiges beachtet wdn, aber das findet jeder schon selbst heraus.
Keiner von euch beiden, Peter und Hary, hat Jörg aber so richtig erklärt, warum nicht geht, was er vorhat. Das liegt daran, dass man ein Datenfeld bzw alle Werte eines Zellbereichs nicht einer als Einzelwert deklarierten Variable zuweisen kann. Das kann man nur mit Variant-Variablen machen. Sie hätte zumindest als Datenfeld deklariert wdn müssen und dann wäre eine Zuweisung auch nur einzelfeldweise möglich gewesen. Auch hätte die Übernahme eines Bereiches in eine Variant-Variable nicht automatisch zur Erzeugung eines echten Datenfeldes, für das LBound und UBound ausgewertet wdn kann, geführt, sondern die Variable hätte dann den Bereich repräsentiert, wahlweise als Objekt oder als Werte.
Gruß+schö1Ad, Luc :-?

Anzeige
AW: VBA - Probleme mit Range.Value
02.12.2012 12:43:25
hary
Hallo
Eine Moeglichkeit waere mit Formel einsetzen.
With Worksheets("Tabelle2")
.Range("C2:C8").FormulaLocal = "=A2+B2" 'Formel eintragen
.Range("C2:C8").Value = .Range("C2:C8").Value 'Formel durch Werte ersetzen
End With

gruss hary

AW: VBA - Probleme mit Range.Value
02.12.2012 13:27:26
JörgS
Hallo Hary,
hat mit der Lösung wunderbar geklappt. Danke nochmal.
Gruß
Jörg

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige