gelöst Makro: Bereich auf freie Zellen untersuchen und Inhalt einfügen
BerndVorwerk (Level 1) - Jetzt verbinden
31.07.2014, aktualisiert 21:10 Uhr, 1023 Aufrufe, 2 Kommentare
Hallo an alle,
ich bräuchte einmal mehr Hilfe bei dem Erstellen eines Makros.
Ich möchte gerne aus dem Tabellenblatt "Übersicht" die Zelle A1 kopieren und in Tabellenblatt "Auftrag" im Bereich B2 bis C4 (also 9 mögliche Zellen) in die nächst freie Zelle einfügen lassen. Reihenfolge der Kontrolle soll dabei sein: B2, B3, B4, C2, C3; ...
Falls also B2, B3, B4 und C2 belegt sind, soll in C3 eingefügt werden.
Ich habe einige Lösungen gefunden, in denen ganze Zeilen oder eine Spalte auf Leere überprüft wird, leider aber nicht, wie man einen Bereich aus mehreren Zeilen und Spalten abfragt.
Es wäre super wenn ihr eine Lösung hättet.
Danke und Gruß,
Bernd
ich bräuchte einmal mehr Hilfe bei dem Erstellen eines Makros.
Ich möchte gerne aus dem Tabellenblatt "Übersicht" die Zelle A1 kopieren und in Tabellenblatt "Auftrag" im Bereich B2 bis C4 (also 9 mögliche Zellen) in die nächst freie Zelle einfügen lassen. Reihenfolge der Kontrolle soll dabei sein: B2, B3, B4, C2, C3; ...
Falls also B2, B3, B4 und C2 belegt sind, soll in C3 eingefügt werden.
Ich habe einige Lösungen gefunden, in denen ganze Zeilen oder eine Spalte auf Leere überprüft wird, leider aber nicht, wie man einen Bereich aus mehreren Zeilen und Spalten abfragt.
Es wäre super wenn ihr eine Lösung hättet.
Danke und Gruß,
Bernd
2 Antworten
- LÖSUNG colinardo schreibt am 31.07.2014 um 16:27:44 Uhr
- LÖSUNG BerndVorwerk schreibt am 31.07.2014 um 21:10:12 Uhr
LÖSUNG 31.07.2014, aktualisiert um 21:25 Uhr
Hallo Bernd,
für diesen Fall gibt es in der Range.Find-Methode den Parameter SearchOrder mit dem sich auch nach Spaltenreihenfolge suchen lässt:
Es geht zwar auch manuell mit zwei verschachtelten For-Schleifen über die Spalten und Zeilen, aber die Find-Methode ist hier, gerade wenn der Bereich der durchsucht werden soll größer ist, eleganter und schneller.
Falls es dich trotzdem interessieren sollte wie die manuelle Suche aussieht, hier noch diese Variante:
Grüße Uwe
für diesen Fall gibt es in der Range.Find-Methode den Parameter SearchOrder mit dem sich auch nach Spaltenreihenfolge suchen lässt:
Variante 1: (mit Range.Find)
01.
Sub FindNextEmpty()
02.
dim ws1 as Worksheet, ws2 as Worksheet, c as Range
03.
Set ws1 = Worksheets("Übersicht") 'Übersichtstabelle
04.
Set ws2 = Worksheets("Auftrag") 'Auftragstabelle
05.
With ws2.Range("B2:C4")
06.
Set c = .Find("", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns)
07.
If Not c Is Nothing Then
08.
c.Value = ws1.Range("A1").Value
09.
End If
10.
End With
11.
End Sub
Falls es dich trotzdem interessieren sollte wie die manuelle Suche aussieht, hier noch diese Variante:
Variante 2: (mit verschachtelten FOR-Schleifen)
01.
Sub FindNextEmpty()
02.
Dim ws1 As Worksheet, ws2 As Worksheet, c As Integer, r as Integer, rngSearch As Range
03.
Set ws1 = Worksheets("Übersicht") 'Übersichtstabelle
04.
Set ws2 = Worksheets("Auftrag") 'Auftragstabelle
05.
Set rngSearch = ws2.Range("B2:C4")
06.
For c = 1 To rngSearch.Columns.Count
07.
For r = 1 To rngSearch.Rows.Count
08.
If rngSearch.Cells(r, c).Value = "" Then
09.
rngSearch.Cells(r, c).Value = ws1.Range("A1").Value
10.
Exit Sub
11.
End If
12.
Next
13.
Next
14.
End Sub
LÖSUNG 31.07.2014 um 21:10 Uhr
Super,
Danke
Danke
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte