Anzeige
Archiv - Navigation
508to512
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
508to512
508to512
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Verschachtelter With-Block

Verschachtelter With-Block
02.11.2004 23:03:13
Fritz
Guten Tach.
Da ich das Selektieren noch immer nicht so richtig lassen kann, mache ich gerade ein paar Trockenübungen im Referenzieren. Zu diesem Behufe habe ich das nachfolgende Übungsmakro geschrieben, was funzt. Ich würde gern wissen, ob ich in den With-Block einen zweiten verschachteln kann, damit ich mir die Variable "Suchzeile" sparen kann, bzw. ob man das nicht eleganter lösen kann. Ich habe nämlich gemerkt, dass ein Projekt von mir zuhause zwar in ausreichender Geschwindigkeit läuft, aber man beim Speichern über unsere langsamen Datenleitungen im Büro fast einpennt (für 1,39 MB ca. 1:43 Min). Deshalb will ich versuchen, sparsamer mit Code umzugehen.
Hier derÜbungscode.

Sub Suchen()
'''Ohne das Tabellenblatt 2 zu aktivieren oder den Suchbereich zu selektieren.
Dim Blatt1 As Worksheet, Blatt2 As Worksheet
Dim Suchbegriff As Range, Suchzeile As Range, Suchbereich As Range
Dim Gefunden As Boolean
Set Blatt1 = Sheets("Tabelle1")
Set Blatt2 = Sheets("Tabelle2")
Set Suchbegriff = Blatt1.Range("A1")
Set Suchbereich = Blatt2.Range("A2:A200")
For Each Suchzeile In Suchbereich
If Suchbegriff = Suchzeile Then
Gefunden = True
End If
Exit For
Next Suchzeile
If Gefunden = True Then
With Suchbegriff
.Offset(0, 1) = Suchzeile.Offset(0, 0)
.Offset(1, 1) = Suchzeile.Offset(0, 3)
.Offset(2, 1) = Suchzeile.Offset(0, 4)
.Offset(3, 1) = CDate(Suchzeile.Offset(0, 6))
End With
'If Gefunden = True Then MsgBox Gefunden
End If
End Sub

Danke mal wieder für Euren Nachhilfeunterricht.
Grüße, Fritz

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

Betreff
Datum
Anwender
Anzeige
AW: Verschachtelter With-Block
Ulf
Kleinigkeiten, ansonsten ok, genaugenommen sollten Objektvariable gelöscht werden:
Option Explicit
Sub Suchen()
Dim Suchbegriff As Range, Suchzeile As Range, Suchbereich As Range
Dim Gefunden As Boolean
Set Suchbegriff = Sheets("Tabelle1").Range("A1")
Set Suchbereich = Sheets("Tabelle2").Range("A2:A200")
For Each Suchzeile In Suchbereich
If Suchbegriff = Suchzeile Then Gefunden = True
Exit For
Next Suchzeile
If Gefunden Then
With Suchbegriff
.Offset(0, 1) = Suchzeile.Offset(0, 0)
.Offset(1, 1) = Suchzeile.Offset(0, 3)
.Offset(2, 1) = Suchzeile.Offset(0, 4)
.Offset(3, 1) = CDate(Suchzeile.Offset(0, 6))
End With
End If
Set Suchbegriff = Nothing
Set Suchbereich = Nothing
End Sub

Ulf
Anzeige
AW: Danke, aber ich hab was falsch gemacht...
02.11.2004 23:52:44
Fritz
Hallo Ulf,
erstmal Danke für Deine Reaktion. Leider funzt die Sache doch nicht. Beim Ausprobieren habe ich, weil ich es mit F8 in Einzelschritten versuchte immer nur den ersten sich im Suchbereich befindlichen Wert eingegeben. Das klappte. Aber leider werden keine anderen Werte gefunden.
Dasselbe passiert auch, wenn ich den Suchbereich auf weitere Spalten erweitere.
Darf ich noch mal nachfragen?
Grüße, Fritz
AW: Danke, aber ich hab was falsch gemacht...
Ulf
Lad mal was hoch, dann muss ich das nicht nachbauen.
Ulf
AW: Hat sich wohl erledigt :-)
03.11.2004 00:29:44
Fritz
Hallo Ulf,
Statt
If Suchbegriff = Suchzeile
funzt es mit
If Suchzeile = Suchbegriff
Das kann ich mir nicht merken, was vorne und was hinten steht.
Dank an Dich,
Grüße, Fritz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige