Excel 2010 Hilfe bei Makro
Hallo Liebe Adminstratoren,
ich bräuchte mal eure Unterstützung bei einem Excel Makro. Ich habe eine Excelliste mit 2 Tabellen. Die erste lautet Artikelliste und beinhaltet sämtliche Artikel. Die 2.Tabelle heisst Kalkulation. Hier möchte ich in eine Zelle springen dann via Tastenkombination das folgende Suchmakro starten. Im groben funktioniert dies auch, nun möchte ich das die Artikelnummer des gefundenen Artikels in die Zeile kopiert, von der ich am Anfang das Makro gestartet habe. Der Fehler liegt vermutlich in einer der letzten Zeilen. Jemand eine Idee? Vielen Dank für eure Unterstützung. Grüße Ice
[Edit Biber] Codeformatierung. [/Edit]
ich bräuchte mal eure Unterstützung bei einem Excel Makro. Ich habe eine Excelliste mit 2 Tabellen. Die erste lautet Artikelliste und beinhaltet sämtliche Artikel. Die 2.Tabelle heisst Kalkulation. Hier möchte ich in eine Zelle springen dann via Tastenkombination das folgende Suchmakro starten. Im groben funktioniert dies auch, nun möchte ich das die Artikelnummer des gefundenen Artikels in die Zeile kopiert, von der ich am Anfang das Makro gestartet habe. Der Fehler liegt vermutlich in einer der letzten Zeilen. Jemand eine Idee? Vielen Dank für eure Unterstützung. Grüße Ice
Sub Artikelsuche()
Dim rng As Range
Dim sBegriff As String, sAddress As String
Dim strActiveCell As String
strActiveCell = ActiveCell.Address
MsgBox strActiveCell
Sheets("Artikelliste").Select 'bei Start auf der Tabelle nicht nötig
sBegriff = InputBox( _
prompt:="Bitte Suchbegriff eingeben:", _
Default:="531351")
If sBegriff = "" Then Exit Sub
Set rng = Columns("A:D").Find( _
What:=sBegriff, _
LookAt:=xlWhole, _
LookIn:=xlValues, _
MatchCase:=False, _
After:=Cells(Rows.Count, 3))
If rng Is Nothing Then
Beep
MsgBox "Suchbegriff nicht gefunden!", , _
Application.UserName
Exit Sub
End If
sAddress = rng.Address
rng.Select
If (MsgBox(rng.Address(False, False), vbYesNo, "Weitersuchen?")) = vbYes Then
rng.Offset(1).Select
Do
Columns("A:D").FindNext(After:=ActiveCell).Activate
If ActiveCell.Address = sAddress Then Exit Sub
If (MsgBox(ActiveCell.Address(False, False), vbYesNo, "Weitersuchen?")) = vbNo Then Exit Do
Loop
End If
Sheets("Kalkulation").Select
strActiveCell = Sheets("Artikelliste").Cells(ActiveCell.Row, 2)
End Sub
[Edit Biber] Codeformatierung. [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 234096
Url: https://administrator.de/contentid/234096
Ausgedruckt am: 21.11.2024 um 18:11 Uhr
8 Kommentare
Neuester Kommentar
Excel, Suche, Makro....
hatten wir gerade erst hier(inkl. Demosheet zum abgucken): MAKRO EXCEL bestimmten Zahlen von einem Arbeitsblatt X in ein neues Arbeitsblatt Z kopieren
Grüße Uwe
hatten wir gerade erst hier(inkl. Demosheet zum abgucken): MAKRO EXCEL bestimmten Zahlen von einem Arbeitsblatt X in ein neues Arbeitsblatt Z kopieren
Grüße Uwe
Zitat von @IceAge:
Auslösen des Makros) befindet. Hast ne Idee was an den letzten 2-3 Zeilen (Zeile 36/37) falsch sein könnte?
klar, du selektierst hier das zweite Sheet, und dann verweist du auf ActiveCell , das ist aber wenn du mit Select das zweite Sheet aktivierst nicht mehr die alte Zelle in Sheet 1 sondern nun eine Zelle in Sheet 2!!Auslösen des Makros) befindet. Hast ne Idee was an den letzten 2-3 Zeilen (Zeile 36/37) falsch sein könnte?
Du solltest hier mit Referenzen arbeiten und dich nicht immer an ActiveCell orientieren.
Lege also am Anfang die Zelle fest in der du das gefundene hineinschreiben willst:
set startZelle = ActiveCell
Zuweisen eines Wertes zu deiner Zelle
startZelle.Value = rng.Value
Zitat von @IceAge:
Nun ist mir aufgefallen, dass etwas am Suchergebnis, welches in die Zelle geschrieben wird nicht mehr stimmt. Zudem würde ich
gern den Suchbereich auf die Spalte A:D (nur im Sheet Artikelliste) ausbreiten. Könntest du mir diesbezüglich auch
weiterhelfen?
siehe weiter untenNun ist mir aufgefallen, dass etwas am Suchergebnis, welches in die Zelle geschrieben wird nicht mehr stimmt. Zudem würde ich
gern den Suchbereich auf die Spalte A:D (nur im Sheet Artikelliste) ausbreiten. Könntest du mir diesbezüglich auch
weiterhelfen?
Wenn ich das Ergebnis in eine feste Zelle ausgeben würde, stimmt seltsamerweise auch wieder das Suchergebnis... Nur bei der
Ausgabe in die StartZelle erhalte ich Murks.
deswegen habe ich oben erwähnt das du dich nicht an ActiveCell halten solltest sondern den Ergebnis-Range(rng) nehmen sollst.Ausgabe in die StartZelle erhalte ich Murks.
Wenn z.B. der Wert der übernommen werden soll, eine Zelle rechts vom Suchwert liegt machst du dies so
startZelle.Value = rng.Offset(0,1).Value
startZelle.Value = Worksheets("Artikelliste").Cells(rng.Row, 2).Value
Hier mal das ganze zusammengefasst:
Sub Artikelsuche()
Dim rng As Range, startZelle As Range
Dim sBegriff As String
Set startZelle = ActiveCell
Sheets("Artikelliste").Select 'bei Start auf der Tabelle nicht nötig
sBegriff = InputBox( _
prompt:="Bitte Suchbegriff eingeben:", Default:="Demo")
If sBegriff = "" Then Exit Sub
With Worksheets("Artikelliste").Columns("A:D")
Set rng = .Find(What:=sBegriff, LookAt:=xlWhole, LookIn:=xlValues, MatchCase:=False, After:=Cells(Rows.Count, 3))
If Not rng Is Nothing Then
firstAddress = rng.Address
Do
' Suchbegriff gefunden, selektiere Zelle nur für's Visuelle
rng.Select
' Abfrage weitersuchen ?
If (MsgBox(rng.Address(False, False), vbYesNo, "Weitersuchen?")) = vbYes Then
Set rng = .FindNext(rng)
Else
' Werte in Zielzelle schreiben
Worksheets("Kalkulation").Select
startZelle.Value = Worksheets("Artikelliste").Cells(rng.Row, 2).Value
' Loop verlassen
Exit Do
End If
Loop While Not rng Is Nothing And rng.Address <> firstAddress
Else
'Suchbegriff nicht gefunden
Beep
MsgBox "Suchbegriff nicht gefunden!", , Application.UserName
Exit Sub
End If
End With
End Sub
Grüße Uwe
Zitat von @IceAge:
vielen Dank. Du bist ein Schatz Makro läuft. Darf ich dich noch um eine Kleinigkeit bitten? In der Zeile 19 wird ja in
der MsgBox die Zelle (z.B.A25) ausgegeben. Könnte ich hier auch den Inhalt (also den Produktnamen) ausgeben lassen?
klar...: (weiß aber nicht wo der steht ...)vielen Dank. Du bist ein Schatz Makro läuft. Darf ich dich noch um eine Kleinigkeit bitten? In der Zeile 19 wird ja in
der MsgBox die Zelle (z.B.A25) ausgegeben. Könnte ich hier auch den Inhalt (also den Produktnamen) ausgeben lassen?
If (MsgBox(rng.Value, vbYesNo, "Weitersuchen?")) = vbYes Then