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

Excel VBA

Frage Entwicklung VB for Applications

Mitglied: bommerlunder1972

bommerlunder1972 (Level 1) - Jetzt verbinden

07.10.2008, aktualisiert 09.10.2008, 8028 Aufrufe, 6 Kommentare

Hallo zusammen,

habe ein keines Problem mit Excel. Habe mich schon lange nicht mehr mit der Thematik beschäftigt.
Kurze Problembeschreibung:
Möchte per Makro eine Spalte markieren und in diesem Bereich dann eine Suche laufen lassen.
Der Wert für die Suche kann fest vorgegeben werden.
Evtl. Fehlermeldung bei nicht vorhanden dieses Wertes.
Angenommen der Wert wird in der Spalte gefunden und es ist die Zelle A100, dann möchte ich alle Werte unterhalb von B100 in eine neue Spalte kopieren.
Hört sich einfach an, aber ich habe schon Probleme mit dem Finden des Wertes....

Vielleicht hat jemand eine Idee und auch die Zeit ein paar Zeilen zu schreiben.

Wäre Dankbar

Falls noch etwas an der Beschreibung fehlt, dann bitte eben melden.
Mitglied: bastla
07.10.2008 um 17:40 Uhr
Hallo bommerlunder1972 und willkommen im Forum!

Möchte per Makro eine Spalte markieren ...
Soll die Spalte tatsächlich vom Makro markiert werden (und, als Voraussetzung dafür, damit eigentlich im Makro bereits als Konstante eingetragen sein), oder soll das Makro in einer bereits vorweg (von Hand) markierten Spalte suchen?
Kann der Suchwert auch mehrfach vorkommen, und wenn ja, genügt es, das erste Auftreten dieses Wertes zu finden?
Welche Vorgaben gelten für die Zielspalte (in welche kopiert werden soll) - welche Spalte (ev auch fixer Abstand zur Suchspalte), einfügen wieder unterhalb von Zeile 100, ...?
Genügt es, wenn die Werte der Zellen unterhalb von B100 in die Zielspalte übertragen werden, oder werden auch die Formatierungen benötigt?

Ein Grundgerüst könnte jedenfalls so aussehen:
01.
Suchbegriff = "Dein Suchbegriff" 
02.
Zeile = 3         'Suche beginnt in dieser Zeile der markierten Spalte 
03.
AbstandQuelle = 1 'Spaltenabstand für Quelle der Kopie 
04.
AbstandZiel = 4   'Spaltenabstand für Ziel der Kopie 
05.
ZeileZiel = 10    'Zeile der Zielspalte, ab welcher die Werte eingefügt werden sollen 
06.
 
07.
Spalte = ActiveCell.Column 
08.
Gefunden = False 
09.
Do While Cells(Zeile, Spalte).Value <> 0 And Zeile <= 65536 
10.
    If Cells(Zeile, Spalte).Value = Suchbegriff Then 
11.
        Gefunden = True 
12.
        Exit Do 
13.
    End If 
14.
    Zeile = Zeile + 1 
15.
Loop 
16.
If Gefunden Then 
17.
    Range(Cells(Zeile, Spalte).Offset(1, AbstandQuelle), Cells(Zeile, Spalte).Offset(0, AbstandQuelle).End(xlDown)).Copy 
18.
    Cells(ZeileZiel, Spalte).Offset(0, AbstandZiel).Activate 
19.
    ActiveSheet.Paste 
20.
Else 
21.
    MsgBox """" & Suchbegriff & """ konnte nicht gefunden werden!", vbCritical, "Nicht gefunden ..." 
22.
End If
Grüße
bastla

P.S.: Der Titel dieses Beitrages lässt sich sicherlich noch etwas informativer formulieren (etwa "Excel - Per VBA Wert suchen und abhängig davon weitere Werte kopieren") ...
Bitte warten ..
Mitglied: bommerlunder1972
07.10.2008 um 18:54 Uhr
Vielen Dank schon mal für die prompte Antwort.

Zu den Fragen:

Soll die Spalte tatsächlich vom Makro markiert werden (und, als Voraussetzung dafür, damit eigentlich im Makro bereits als Konstante eingetragen sein), oder soll das Makro in einer bereits vorweg (von Hand) markierten Spalte suchen?

Die Markierung soll lediglich als Suchkriterium dienen. Vielleicht ist sowas auch per Quelltext möglich. Der gesuchte Wert soll aus einer Spalte heraus gesucht werden.

>>Kann der Suchwert auch mehrfach vorkommen, und wenn ja, genügt es, das erste Auftreten dieses Wertes zu finden?

Falls es möglich ist die Suche auf eine Spalte zu minimieren, ist der gesuchte Wert nur einmal vorhanden.

>>Welche Vorgaben gelten für die Zielspalte (in welche kopiert werden soll) - welche Spalte (ev auch fixer Abstand zur Suchspalte), einfügen wieder unterhalb von Zeile 100, ...?

Die Vorgabe kann Fix gestaltet werden. Einfügen ab der Zeile G16.

>>Genügt es, wenn die Werte der Zellen unterhalb von B100 in die Zielspalte übertragen werden, oder werden auch die Formatierungen benötigt?

Hier reichen die Werte. Die Zellen sind Standard formatiert.

Werde mich gleich an die Arbeit machen und die Geschichte versuchen mit deinem Grundgerüst umzusetzen. Mal schauen wie weit ich komme.
Komme halt aus der Netzwerkwelt und habe von VBA wenig Ahnung. Bin einfach für jede Hilfe dankbar.

Danke nochmal
Bitte warten ..
Mitglied: bastla
07.10.2008 um 21:23 Uhr
Hallo bommerlunder1972!

In der folgenden Version wird der Suchbegriff ("Dein Suchbegriff") in jener (einen) Spalte gesucht, in der sich der Zellcursor beim Start des Makros befindet. Die Suche beginnt in der angegebenen Zeile (3) und endet
- wenn der Suchbegriff gefunden wurde (exakte Übereinstimmung mit Berücksichtigung Groß-/Kleinschreibung) oder
- wenn die erste leere Zelle in der Suchspalte erreicht wird oder
- wenn die Zeile 65536 (letzte Zeile für Excel < 2007) erfolglos durchsucht wurde.

Unter der Annahme einer Fundstelle A100 wird mit der durch "AbstandZeileQuelle" (1) und "AbstandSpalteQuelle" (1) festgelegten Zelle - daher im Beispiel ab B101 - beginnend der mit zusammenhängenden Daten gefüllte Rest der Spalte kopiert (also von B101 bis zur letzten Zelle der Spalte B vor einer leeren Zelle oder bis B65536). Da es ohnehin keine besondere Formatierung gibt, erfolgt einfach ein "Copy" inkl. Rahmen und Formaten. Hinweis: Sollte die Möglichkeit bestehen, dass sich die Fundstelle bereits in Zeile 1 befindet, müsste der zu kopierende (Quell-)Bereich mit einer anderen Technik festgelegt ewrden.

Eingefügt werden die Zellen ab "SpalteZiel/ZeileZiel" (G16) - der Vorgang entspricht einem manuell durchgeführten "Copy/Paste".

01.
Suchbegriff = "Dein Suchbegriff" 
02.
Zeile = 3               'Suche beginnt in dieser Zeile der markierten Spalte 
03.
AbstandSpalteQuelle = 1 'Spaltenabstand für Quelle der Kopie (A100 -> B100) 
04.
AbstandZeileQuelle = 1  'Zeilenabstand für Quelle der Kopie  (     -> B101) 
05.
SpalteZiel = "G"        'Spalte für Ziel der Kopie 
06.
ZeileZiel = 16          'Zeile für Ziel der Kopie 
07.
 
08.
Spalte = ActiveCell.Column 
09.
Gefunden = False 
10.
Do While Cells(Zeile, Spalte).Value <> "" And Zeile <= 65536 
11.
    If Cells(Zeile, Spalte).Value = Suchbegriff Then 
12.
        Gefunden = True 
13.
        Exit Do 
14.
    End If 
15.
    Zeile = Zeile + 1 
16.
Loop 
17.
If Gefunden Then 
18.
    Range(Cells(Zeile, Spalte).Offset(AbstandZeileQuelle, AbstandSpalteQuelle), Cells(Zeile, Spalte).Offset(AbstandZeileQuelle-1, AbstandSpalteQuelle).End(xlDown)).Copy 
19.
    Cells(ZeileZiel, SpalteZiel).Activate 
20.
    ActiveSheet.Paste 
21.
Else 
22.
    MsgBox """" & Suchbegriff & """ konnte nicht gefunden werden!", vbCritical, "Nicht gefunden ..." 
23.
End If
Grüße
bastla
Bitte warten ..
Mitglied: bommerlunder1972
08.10.2008 um 17:15 Uhr
Hallo zusammen,

funktioniert noch nicht ganz.
Hatte gerade erst die Zeit gefunden um die Geschichte auszuprobieren.
Es gibt noch Probleme mit dem Suchbegriff.
Ich müßte nach einem Datum incl. Zeitstempel suchen, was folgendermaßen formatiert ist.
12.03.2009 12:00:00
Ich glaube, das es so ohne weiteres gar nicht möglich ist.
Wenn doch, würde es mich natürlich freuen....
Ich habe die Variable als String deklariert.
Und wenn ich die Schleife zum Suchen dann laufen lasse, läuft das Script über die angegebene Stelle hinaus.
Habe gerade schon mal geschaut wie es mit einer Datumsfunktion aussieht um aus diesem Datum und Zeitstempel eine echte Zahl zu machen, bin abernicht fündig geworden.
Hat jemand eine Idee...?

Vielen Dank an bastla für die geleistete unterstützung
Hat mir bis jetzt sehr geholfen
Bitte warten ..
Mitglied: bastla
08.10.2008 um 19:17 Uhr
Hallo bommerlunder1972!

Ich müßte nach einem Datum incl. Zeitstempel suchen, was folgendermaßen formatiert ist.
12.03.2009 12:00:00
Wenn der Wert offensichtlich von Excel als Datum/Zeit interpretiert wird, sollte es mit folgendem Suchbegriff klappen:
01.
Suchbegriff = CDate("12.03.2009 12:00:00")
Der umgekehrte Weg ("eine echte Zahl machen") sollte zwar auch funktionieren ("12:00:00" wird dann zu 0,5 - Zeitangaben werden als Bruchteile von Tagen gespeichert - und der Datumswert entspricht der Anzahl der Tage ab dem 1.1.1900, also 39.884, daher wäre die gesuchte Zahl 39884,5), aber lesbarer bleibt es sicherlich bei Behandlung als Datums/Zeitwert.

Grüße
bastla
Bitte warten ..
Mitglied: bommerlunder1972
09.10.2008 um 20:20 Uhr
Vielen Dank für deine Hilfe.
Hat alles funktioniert.
Ich frage mich nur, was ich für die Zukunft am besten machen kann, um Excel in Verbindung mit VBA auf den Schirm zu bekommen.
Wird in beruflicher Hinsicht immer wichtiger...

Kaufe ich Literatur...?
Wenn ja, kann jemand was empfehlen?
Am besten, denke ich mit Beispielen usw.

Belege ich einen Lehrgang in diese Richtung?
Diese sind sehr teuer und aus der Vergangenheit weiß ich das 80% am Dozenten liegt.

Gibt es im Netz entsprechende Seiten, wo man praktische Beispiele laden kann und auch daran üben kann...?

Oder wächst man einfach mit den Aufgaben...?

Grüße
Bommerlunder1972

Bin Dankbar für jede Antwort
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
Excel VBA Sortierung von Daten (5)

Frage von easy4breezy zum Thema VB for Applications ...

VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

Microsoft Office
Excel VBA: Tranferieren von Werten aus Quelldatei in die Masterdatei mit SVERWEIS (3)

Frage von peter.schroeder zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...