Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Range Cells Vba
#1
Hallo,

Manch verstehe ich die (Excel) Welt niicht mehr. Bin gerade dabei mein Programm ein bißchen umzubauen.
Ich habe hier einen Code, der aus einer Liste Werte heraussucht und in eine andere Tabelle überträgt.


Code:
Dim rng As Range
Dim i, j As Integer
Dim Sakt As Variant
Public WSname As String

Sub DataSearchCopy()

ActiveCell.Select
   rNr = ActiveCell.Row
   WSname = Cells(rNr, 3).Value
   
Set rng = Sheets(WSname).Range("B3:B140")

   For i = 7 To 20
       Sakt = CStr(Sheets("Analyse").Cells(i, 2).Value)
       For j = 2 To 6
           rng.Cells(Application.Match(Sakt, rng, 0), j).Copy Worksheets("Analyse").Cells(i, j + 1)
       Next
   Next

End Sub

Funktioniert so auch!
Bloss kann ich den Range bei Set rng nicht gegen eine Range-Cells-Konstruktion austauschen


Code:
Set rng = Sheets(WSname).Range(Cells(3,2),Cells(140,2))

Also, so funktioniert es nicht. Huh

...hat jemand eine plausible Erklärung, warum?
Antworten Top
#2
Hallo,

versuchs mal so

Code:
With Worksheets(WSname)
Set rng = .Range(.Cells(3,2),.Cells(140,2))
End With
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#3
Hallo 

Set rng = Sheets(WSname).Range(Cells(3,2),Cells(140,2))

verstehe ich nicht so ganz, bei mir klappt der Code wenn ich damit zum Test einen Bereich ausfülle.   Range(Cells(3, 2), Cells(140, 2)).Value = "a"
Was ist mit Sheets(WsName), gibt es dieses Blatt??

mfg  Gast 123
Antworten Top
#4
Hallo Gast 123,

wenn WSName mit dem gerade aktiven Tabellenblatt identisch ist oder im gleichen Tabellenmodul ist, dann geht das. Ist dies anders, kommt es zum Fehler.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#5
Habs gerade mit den Punkten versucht. Geht auch nicht.

Mit dem normalen Range funktioniert es perfekt. Einfach auf einer Tabelle mit den Werten(WSname) Zelle aktivieren dann mit Shortcut Makro (DataSearchCopy) starten. Danach wird eine Liste mit div.Werten erstellt, mit denen wiederum weitere Brerechnungen ausgeführt werden können.
Antworten Top
#6
Hallo,

(14.09.2017, 19:23)lapunta schrieb: Habs gerade mit den Punkten versucht. Geht auch nicht.

Hast Du die Punkt auch vor den beiden Cells gesetzt? Dann muss es gehen.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#7
Na, ich hab's sogar aus deiner Antwort rauskopiert und eingepasted.

... und soweit ich weiß, braucht man die Punkte auch nur bei  with . - oder falls Weihnachten auf Ostern fällt.
Antworten Top
#8
(14.09.2017, 21:11)lapunta schrieb: ... und soweit ich weiß, braucht man die Punkte auch nur bei  with . - ...

Das hast Du genau richtig erkannt! Siehe Vorschlag von Stefan.

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste