Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Makro: Bereich auf freie Zellen untersuchen und Inhalt einfügen

Frage Microsoft Microsoft Office

Mitglied: BerndVorwerk

BerndVorwerk (Level 1) - Jetzt verbinden

31.07.2014, aktualisiert 21:10 Uhr, 978 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
Mitglied: colinardo
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:
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
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:
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
Grüße Uwe
Bitte warten ..
Mitglied: BerndVorwerk
31.07.2014 um 21:10 Uhr
Super,
Danke
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel 2010 Zellen mit bestimmten Inhalt mit Makro formartierten (5)

Frage von packmann2016 zum Thema Microsoft Office ...

VB for Applications
VBA - Welchen Inhalt hat eine Zelle die mit der Taste Enft geleert wird? (3)

Frage von Juckie zum Thema VB for Applications ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Internet
gelöst Jeden morgen Internet-Probleme (58)

Frage von pjrtvly zum Thema Internet ...

LAN, WAN, Wireless
gelöst IP Adressen - Modem - Switch - Accesspoint (26)

Frage von teuferl82 zum Thema LAN, WAN, Wireless ...

Server-Hardware
HP DL380 G7: Booten vom USB via USB 3.1-PCI-e Karte möglich? (24)

Frage von Paderman zum Thema Server-Hardware ...

DSL, VDSL
VDSL Signal via PowerLine an Fritzbox - Möglich? (19)

Frage von Seichobob zum Thema DSL, VDSL ...