Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
400to404
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
400to404
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

mit Case Daten übertragen

mit Case Daten übertragen
TinoB
hallo excelspezies,
und wieder habe ich ein problem und hoffe es kann mir jemand helfen. ich lese mit einem makro daten einer dat datei in die Tabelle2 ein. diese werden dann wiederum per makro in die entsprechende form gebracht und danach automatisch in die Tabelle1 kopiert. nun mein anliegen um den vorgang zu verkürzen. kann ich mit diesem beispiel eigentlich die daten gleich in die Tabellen1 einlesen um das kopieren zu überspringen? dieses beispiel funktioniert so nicht, das habe ich schon getestet. aber vielleicht habe ich nur einen fehler drin.
Sub übertrag() Dim rng As Range, LZ As Integer LZ = Range("F65536").End(xlUp).Row For Each rng In Range(Cells(20, 6), Cells(LZ, 6)) Select Case rng Case "RE": If Tabelle2.Cells(rng.Row, 5) = "Kanal" Then Tabelle1.Cells(rng.Row, 11) = Tabelle2.Cells(rng.Row, 41) End If If Tabelle2.Cells(rng.Row, 5) = "Bogen" Then Tabelle1.Cells(rng.Row, 12) = Tabelle2.Cells(rng.Row, 11) End If End Select Next rng End Sub
Danke
Tino

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

Betreff
Benutzer
Anzeige
AW: mit Case Daten übertragen
Nepumuk
Hallo Tino,
und was funktioniert nicht?
Gruß
Nepumuk
hm,
TinoB
hi Nepumuk,
ich weiß auch nicht mehr. jetzt funktioniert es. allerdings muß in der Tabelle2 nach unten gezählt werden, deswegen habe ich Worksheets("Tabelle2").Select eingefügt. nur springt excel zur Tabelle2, trotz das ScreenUpdating auf false gesetzt wurde. an was kann das liegen?

Sub Übertrag()
Application.ScreenUpdating = False
Worksheets("Tabelle2").Select
Dim rng As Range, LZ As Integer
LZ = Range("a65536").End(xlUp).Row
For Each rng In Range(Tabelle2.Cells(1, 1), Cells(LZ, 1))
Select Case rng
Case 10:
If Tabelle2.Cells(rng.Row, 3) = "1" Then
Tabelle1.Cells(rng.Row, 2) = Tabelle2.Cells(rng.Row, 2)
End If
If Tabelle2.Cells(rng.Row, 3) = "2" Then
Tabelle1.Cells(rng.Row, 4) = Tabelle2.Cells(rng.Row, 4)
End If
End Select
Next rng
Application.ScreenUpdating = True
End Sub

Anzeige
AW: hm,
Nepumuk
Hallo Tino,
das:
For Each rng In Range(Tabelle2.Cells(1, 1), Cells(LZ, 1))
ist z.B. nicht sauber referenziert. Du könntest es so schreiben:
For Each rng In Tabelle2.Range(Tabelle2.Cells(1, 1), Tabelle2.Cells(LZ, 1))
ich würde es aber so machen:

Option Explicit
Sub Übertrag()
Dim rng As Range
Application.ScreenUpdating = False
With Worksheets("Tabelle2")
For Each rng In .Range(.Cells(1, 1), .Cells(.Cells(65536, 1).End(xlUp).Row, 1))
If rng = 10 Then
If .Cells(rng.Row, 3) = "1" Then Tabelle1.Cells(rng.Row, 2) = .Cells(rng.Row, 2)
If .Cells(rng.Row, 3) = "2" Then Tabelle1.Cells(rng.Row, 4) = .Cells(rng.Row, 4)
End If
Next
End With
Application.ScreenUpdating = True
End Sub


Damit ist es gleichgültig, in welcher Tabelle du dich beim Makrostart befindest.
Gruß
Nepumuk
Anzeige
ok, funktioniert, danke für die hilfe (o.T.)
TinoB
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige