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

Transport von Zellwerten

Transport von Zellwerten
06.05.2021 18:18:16
Zellwerten
Hallo Excelfreunde.
ich habe eine kleine Datei und wollte mit Hilfe von VBA einzelne Werte in andere Zellen transportieren.
Hier die Beispieldatei:
https://www.herber.de/bbs/user/146039.xlsb
Ich möchte das Was und das Ziel eingeben. Der entprechende Wert soll aus der Liste (A3:D5) in die Zielzelle transportiert werden, also aus der Lsite verschwinden.
In dem Beispiel habe ich 13/1 als Was und AT1 als Ziel vorgegeben. Excel soll 13/1 in A9 schreiben und aus A3 löschen.
Ich hoffe ich habe mich verständlich ausgedrückt.
Besten Dank im Vorraus
Steve

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

Betreff
Datum
Anwender
Anzeige
AW: Transport von Zellwerten
07.05.2021 14:41:04
Zellwerten
Hallo Steve,
nein, gar nicht verständlich ausgedrückt. Wahrscheinlich der Grund, warum keiner sich diese eigentlich einfache Sache angenommen hat.
Ich bin auch nicht sicher, dass es ist, was Du erwartest.

Sub Harztransport()
Dim Was
Dim Ziel
Dim ZWas As Range
Dim ZZiel As Range
Was = Range("G3").Value
Ziel = Range("G5").Value
'Suche Inhalt von G3
Range("A1").Select
Set ZZiel = Cells.Find(What:=Ziel, LookAt:=xlWhole, SearchDirection:=xlNext, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False)
If ZZiel Is Nothing Then
MsgBox "Wert """ & Ziel & """ nicht gefunden."
Else
'In der gefundene Spalte, suche Inhalt von G5
Range("A1").Select
Set ZWas = ZZiel.EntireColumn.Find(What:=Was, LookAt:=xlWhole, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If ZWas Is Nothing Then
MsgBox "Wert """ & Was & """ in der Splate " & Chr(64 + ZZiel.Column) & " nicht gefunden."
Else
ZZiel.Offset(1, 0) = Was
ZWas.ClearContents
End If
End If
End Sub
VG
Yal
Anzeige
AW: Transport von Zellwerten
07.05.2021 16:45:10
Zellwerten
Hey Yal,
Danke dass du dich versucht hast, dem Problem anzunehmen.
Ich habe nochmal genauer drüber nachgedacht und festgestellt, dass es im Prinzip ja Ausschneiden des WAS und einfügen beim ZIEL ist.
ich hab es auch mal weiter versucht, doch leider kommt bei mir Fehler 1004 ;(

Sub Transport()
Dim Zeile As Long
Dim Spalte As Long
Dim Was As String
Dim arr As Variant
Dim SOffset As Long
Dim ZOffset As Long
arr = Range("a3:d6")
ZOffset = 0
SOffset = 0
Was = Range("g3").Value
For Zeile = LBound(arr) To UBound(arr)
For Spalte = LBound(arr, 2) To UBound(arr, 2)
If arr(Zeile, Spalte) Like Was Then
SOffset = Spalte
ZOffset = Zeile
End If
Next
Next
Range("a3").Offset(ZOffset, SOffset).Cut
Select Case Range("G5").Value
Case "AT1": Range("A9").PasteSpecial xlPasteAll
Case "AT2": Range("B9").PasteSpecial xlPasteAll
Case "Beh.1": Range("C9").PasteSpecial xlPasteAll
Case "Beh.2": Range("D9").PasteSpecial xlPasteAll
End Select
End Sub

Anzeige
AW: Transport von Zellwerten
07.05.2021 17:12:52
Zellwerten
Nachtrag:
Nach einigem Rumprobieren habe ich festgestellt, dass das Array zu groß für meine Schleifen ist. Ich habe es auf A3:B6 gekürzt.
Das Makro findet nun die richtige Zelle und schneidet diese auch aus. Allerdings für er sie nicht in A9 bzw.B9 ein (Fehler1004).
Wenn ich dann im Excel STRG+V bestätige fügt er allerdings an der richtigen Stelle ein.
Weiß einer von Euch wo der Fehler ist?

Sub Transport()
Dim Zeile As Long
Dim Spalte As Long
Dim Was As String
Dim arr As Variant
Dim SOffset As Long
Dim ZOffset As Long
arr = Range("a3:b6")
ZOffset = 0
SOffset = 0
Was = Range("g3").Value
For Zeile = LBound(arr) To UBound(arr)
For Spalte = LBound(arr, 2) To UBound(arr, 2)
If arr(Zeile, Spalte) Like Was Then
SOffset = Spalte - 1
ZOffset = Zeile - 1
End If
Next
Next
Range("a3").Offset(ZOffset, SOffset).Cut
Select Case Range("G5").Value
Case "AT1": Range("A9").PasteSpecial xlPasteValues
Case "Beh.1": Range("B9").PasteSpecial xlPasteValues
End Select
End Sub
Danke
Anzeige
AW: Transport von Zellwerten
11.05.2021 15:53:44
Zellwerten
Hallo Steve,
ein Copy-PasteValue ist für eine einzelne Werte ein bisschen over-engineered. Bei mehrere Zelle schon.
Der Umweg über einen Array ist nur sinnvoll, wenn man mehrere Werte auf einmal ablegen möchte. Ein Excel-Bereich ist auch ein Array und nur lesend gibt es keine Performance-Einbusse.

Sub Transport()
Dim Was As String
Dim gefunden As Boolean
Was = Range("g3").Value
For Each Z In Range("a3:b6").Cells
If Z.Value Like Was Then
gefunden = True
Exit For
End If
Next
If gefunden Then
Select Case Range("G5").Value
Case "AT1": Range("A9") = Z.Value
Case "Beh.1": Range("B9") = Z.Value
End Select
End If
End Sub
Einzige Problem: mit deinem Vorschlag wrid immer die letzt gefunden Zelle, Falls der "Was" mehrmals vorhanden wäre, genommen. Bei meiner immer die erste Zelle.
Wenn die letzte genommen werden soll:

Sub Transport()
Dim Was As String
Dim gefunden As Range
Was = Range("g3").Value
For Each Z In Range("a3:b6").Cells
If Z.Value Like Was Then
Set gefunden = Z
End If
Next
If Not gefunden Is Nothing Then
Select Case Range("G5").Value
Case "AT1": Range("A9") = gefunden.Value
Case "Beh.1": Range("B9") = gefunden.Value
End Select
End If
End Sub
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige