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

Einträge per VBA untereinander

Einträge per VBA untereinander
20.10.2015 11:54:14
Snewi
Hallo,
ich möchte gerne Daten aus einem bestimmten Bereich untereinander schreiben lassen per VBA!
von Bereich B4 : H15 nur die Nummern in Spalte B wo Spalte H einen Wert hat!
von Bereich B20 : H31 nur die Nummern in Spalte B wo Spalte H einen Wert hat!
alles untereinander in J und K nur die Werte ohne Formeln!
Wie geht das am einfachsten?
Gruß
https://www.herber.de/bbs/user/100899.xlsx

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einträge per VBA untereinander
20.10.2015 12:13:03
Daniel
Hi
naja, 0 ist auch ein Wert!
deiner Beschreibung nach kannst du einfach alles kopieren und einfügen.
ansonsten halt so:
dim Zelle as Long
dim Zeile as Long
Zeile = 4
for each Zelle in Range("H4:H15,H20:H31").specialcells(xlcelltypeformulas, 1)
if Zelle.value  0 then
Cells(Zeile, 10).value = Zelle.offset(0, -6).value
Cells(Zeile, 11).valeu = Zelle.value
end if
Zeile = Zeile + 1
next
Gruß Daniel

AW: Einträge per VBA untereinander
20.10.2015 12:26:10
Snewi
Es kommt der Fehler:
Steuervariable für for each muss vom Typ Variant oder Object sein!
Gruss

AW: Einträge per VBA untereinander
20.10.2015 12:26:50
Daniel
ups sorry
dim Zelle as Range
Gruß Daniel

Anzeige
AW: Einträge per VBA untereinander
20.10.2015 12:57:29
Snewi
Klappt soweit! Danke! Wie bekomme ich denn die Einträge direkt untereinander!
Gruß

AW: Einträge per VBA untereinander
20.10.2015 13:03:05
Daniel
nimm das Zeile = Zeile + 1 noch in den IF-Block mit auf.
Gruß Daniel

AW: Einträge per VBA untereinander
22.10.2015 09:42:26
Snewi
Hab da noch ein kleines Problem! Kann es sein das ich bei Range zu viele Bereiche angegeben habe?
For Each Zelle In Worksheets("SM").Range("I7:I18, R7:R18, I24:I35, R24:R35, I41:I52, R41:R52, I58:I69, R58:R69, I75:I86, R75:R86, I92:I103, R92:R103, I109:I120, R109:R120, I126:I137, R126:R137, I143:I154, R143:R154, I160:I171, R160:R171, I177:I188, R177:R188, I194:I205, R194:R205, I211:I222, R211:R222, I228:I239, R228:R239, I245:I256, R245:R256, I262:I273, R262:R273, I279:I290, R279:R290").SpecialCells(xlCellTypeFormulas, 1)
Wie kann ich das trotzdem ausführen?
Gruß

Anzeige
AW: Einträge per VBA untereinander
22.10.2015 10:58:07
Snewi
Vielleicht irgendwie so ähmlich?

Set myRange = Range("I7:I18, R7:R18, I24:I35, R24:R35, I41:I52, R41:R52, I58:I69, R58:R69, I75: _
I86, R75:R86, I92:I103, R92:R103, I109:I120, R109:R120, I126:I137, R126:R137")
Set myRange = Union(myRange, Range("I143:I154, R143:R154, I160:I171, R160:R171, I177:I188, R177: _
R188, I194:I205, R194:R205, I211:I222, R211:R222"))
Set myRange = Union(myRange, Range("I228:I239, R228:R239, I245:I256, R245:R256, I262:I273, R262: _
R273, I279:I290, R279:R290"))
For Each Zelle In Worksheets("SM").Range(myRange).SpecialCells(xlCellTypeFormulas, 1)

Anzeige
AW: Einträge per VBA untereinander
22.10.2015 12:55:35
Daniel
Hi
ja, im Prinzip so.
der Addressstring in der Range-Funktion darf maximal 256 Zeichen lang sein, mehr kann der Compiler an dieser stelle nicht verarbeiten, auch wenn die Range ansich aus mehr einzelnen Bereichen bestehen kann.
(die Bereiche werden im Adressstring durch Kommas getrennt, bis Excel 2003 konnte eine Range aus maximal 8192 einzelnen Bereichen bestehen, diese Zahl wurde aber erhöht)
Daher muss man dann andere Methoden verwenden, um die Range zu definieren, wenn die 256 Zeichen im Addressstring nicht ausreichen.
Über die UNION-Methode die Range "stückchenweise" zu erweitern ist eine davon.
bei Regelmässigen Zellbereichen kann auch INTERSECT (Schnittmenge aus zwei Ranges) bei der Berschreibung des gesamten Zellbereichs helfen
beispielsweise für deinen Fall:
Set Zeilen = Range("7:18,24:35,41:52,58:69")
Set Spalten = Range("I:I,R:R")
set myRange = Intersect(Zeilen, Spalten)
Gruß Daniel

Anzeige
AW: Einträge per VBA untereinander
22.10.2015 14:15:08
Snewi
For Each Zelle In Worksheets("SM").Range(myRange).SpecialCells(xlCellTypeFormulas, 1)
hier ist noch irgendein Fehler! hsb ich das syntaxmässig überhaupt richtig?
Gruß

AW: Einträge per VBA untereinander
22.10.2015 14:17:51
Snewi
Alles sieht so aus:

Sub kopieren()
Dim Zelle As Range
Dim myRange As Range
Dim Zeile As Long
Dim Zeilen As Range
Dim Spalten As Range
Zeile = 5
Set Zeilen = Range("7:18,24:35,41:52,58:69,75:86,92:103,109:120,126:137,143:154,160:171,177:188, _
194:205,211:222,228:239,245:256,262:273,279:290,279:290")
Set Spalten = Range("I:I,R:R")
Set myRange = Intersect(Zeilen, Spalten)
For Each Zelle In Worksheets("SM").Range(myRange).SpecialCells(xlCellTypeFormulas, 1)
If Zelle.Value  0 Then
Cells(Zeile, 2).Value = Zelle.Offset(0, -8).Value
Cells(Zeile, 3).Value = Zelle.Offset(0, -7).Value
Cells(Zeile, 4).Value = Zelle.Value
Zeile = Zeile + 1
End If
Next
End Sub

Anzeige
AW: Einträge per VBA untereinander
22.10.2015 16:15:10
daniel
Hi
wenn dann so:
Set Zeilen = Worksheets("SM").Range("7:18,..;279:290")
Set Spalten = Worksheets("SM").Range("I:I,R:R")
Set myRange = Intersect(Zeilen, Spalten)
For Each Zelle in myRange.Specialcells(...)
wenn mit range-Variablen arbeitest, dann gibst du das Tabellenblatt nur bei der Zuweisung (Set = ...) an. Wenn du in der Folge mit der Rangevariable arbeitest, dann brauchst du kein Tabellenblatt mehr, weil immer gleiche Tabellenblatt verwendet wird wie bei der Zuweisung.
wenn du in deiner Systematik arbeiten wollest, dann so:
For Each Zelle In Worksheets("SM").Range(myRange.Address).SpecialCells(xlCellTypeFormulas, 1)
was aber Unsinn ist, weils nicht notwendig ist und auch die 256-Zeichenproblematik nicht löst, weil du hier ja wieder die Adresse der Zellen als Textstring angibst.
Gruß Daniel

Anzeige
AW: Einträge per VBA untereinander
23.10.2015 08:37:51
Snewi
klappt super so! Vielen Dank

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige