Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zellkoordinaten ermitteln

Zellkoordinaten ermitteln
14.01.2015 10:48:25
Rollermann
Hallo,
Ich habe mehrere Tabellen(Name: Beleg), in der ich Artikel und die entsprechenden Werte mittels einer Eingabemaske eintrage.
Dazu gibt es eine Übersicht, in einer eigenen Tabelle.
Ich suche eine Möglichkeit, in der Übersicht die entsprechende Zeile mit dem namen der aktuellen Belegtabelle zu finden und in die entsprechende Spalte dieser Zeile den Wert einzutragen.
Bsp:
Butter soll mit 2 gebucht werden
X/A/B/C/D
1:Artikel/Beleg1/Beleg2/Beleg3
2:Wurst/15/10/15
3:Brot/12/12/12
4:Butter/1/1/
Also Artikel Wurst(A2) bekam den Wert 15(D2) in Beleg 3. Nun soll Artikel Butter durch den code gesucht werden und mir die Zeile ausgeben(hier 4) und Beleg 3 gesucht werden und mir die spalte ausgeben(hier D)
dann soll über
Worksheet("Bsp").Cells(ArtZeile,BelSpalte)=2
der Wert 2 in Zelle D4 eingetragen werden.
Ich scheitere daran, dass alle codeschnipsel die ich bisher gefunden und eingebaut habe mir entweder "Butter" zurück geben (Spalte finde ich garnicht) oder sie geben eben nichts zurück.
Ich wäre für tips sehr dankbar!

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellkoordinaten ermitteln
14.01.2015 10:56:20
Daniel
Hi
ArtZeile = Worksheet("Bsp").Columns(1).Find(What:="Butter", Lookat:=xlwhole).Row
BelSpalte = Worksheet("Bsp").Rows(1).Find(What:="Beleg 3", LookAt:=xlwhole).Column
Worksheet("Bsp").Cells(ArtZeile,BelSpalte)=2

oder so:
With Worksheets("Bsp")
Intersect(.Columns(1).Find(what:="Butter").EntireRow, .Rows(1).Find(What:="Beleg 3"). _
EntireColumn).Value = 2
End With
Gruß Daniel

Anzeige
AW: Zellkoordinaten ermitteln
14.01.2015 12:23:31
Rollermann
Ich habe es danach versucht und bekomme in der ArtZeile-Zeile den Laufzeitfehler '91' Objektvariable oder With-Blockvariable nicht festgelegt.
mein code sieht wie folgt aus:

Dim Tabellenblatt =ActiveSheet.Name as String
Dim Suche=ComboBox1.text as String
Dim ArtZeile as Range
Dim BelSpalte as Range
If Worksheets("WARENEINGANG").cells(2,256).End(xltoLeft).value = Tabellenblatt then
ArtZeile = Worksheets("WARENEINGANG").columns(2).Find(What:=Tabellenblatt, Lookat:=xlWhole).row
BelSpalte = Worksheets("WARENEINGANG").Rows(2).Find(What:=Suche, LookAt:=xlWhole).column
Else

Anzeige
AW: Zellkoordinaten ermitteln
14.01.2015 13:04:17
Rollermann
oh, der fehlerteufel!
man möge mir die If-Zeile verzeihen, das ist natürlich humbug. der fehler bleibt aber der selbe...

AW: Zellkoordinaten ermitteln
14.01.2015 11:07:33
Klaus
Hi,
die Spalte ermittelst du so:
Sub test()
Dim meineSpalte
meineSpalte = WorksheetFunction.Match("Beleg3", Rows(1), False)
MsgBox meineSpalte
End Sub
Wenn die Überschriften nicht in Zeile 1 stehen, musst du Rows(1) anpassen. Statt "Beleg3" natürlich deinen echten Suchbegriff oder eine Variable einsetzen. Achtung, keine Fehlerbehandlung: Wird der Begriff gar nicht gefunden, gibt es einen Makrofehler.
Grüße,
Klaus M.vdT.

Anzeige
AW: Zellkoordinaten ermitteln
14.01.2015 17:22:38
Rollermann
Danke vielmals!
Werde es morgen dann einbauen!

AW: Zellkoordinaten ermitteln
15.01.2015 08:54:47
Rollermann
Hallo, habe es nun versucht, Pflege ich das ganze angepasst ein, bekomme ich die Fehlermeldung "Objekt erforderlich"
Es sieht so aus:
Dim Suche as string
Dim sZeile
sZeile = WorksheetFunktion.Match(Suche,Rows(2),False)
vielleicht sollte ich noch erwähnen, dass die suche in einem anderen Arbeitsblatt durchgeführt wird.

Anzeige
AW: Zellkoordinaten ermitteln
15.01.2015 09:44:26
Klaus
Du musst "Suche" auch etwas zuordnen!
Und auf das Arbeitsblatt musst du natürlich referenzieren
Dim Suche as string
Dim sZeile
Suche = "Beleg3"
sZeile = WorksheetFunktion.Match(Suche,sheets("Tabelle27").Rows(2),False)
Da ich deine Datei nicht kenne, kann ich dir nur den groben Weg zeigen. Auf die freundliche Anrede und die abschließende Grußfloskel verzichte ich in diesem Beitrag, da Höflichkeit im Internet nicht mehr modern ist.

Anzeige
AW: Zellkoordinaten ermitteln
19.01.2015 11:34:56
Rollermann
Hallo Zusammen,
suche ist natürlich etwas zugeordnet. Jedoch erhalte ich immer noch den Fehler:
"Objekt erforderlich!"
Ich habe heute nochmals etwas gebastelt und im moment sieht es wie folgt aus:
Privat Sub CommandButton1_Click()
Dim Auswahl
Dim sZeileWa
Dim sZeileBu
Dim sSpalteBu
Auswahl = ComboBox1.Value 'Auswahl der ComboBox als Text übernehmen klappt
sZeileWa = ComboBox1.ListIndex + 4
'Damit ermittle ich die Zeilennummer, da der ListenIndex ja ab der Fixen Zeile 4 Befüttert wird
'Jetzt die Spalte in der anderen Tabelle finden
sSpalteBu = WorksheetFunktion.Match(Auswahl,Sheets("Buchungen").Rows(3), False)
'Hier Kommt Objekt erforderlich, obwohl "Objekt" doch mit "Auswahl" festgelegt ist
End Sub
Floskel trifft den punkt... "Der Gruß, die Begrüßungsformel, Begrüßungsfloskel, Abschiedsformel und Abschiedsfloskel, ist eine formalisierte oder ritualisierte Geste, Floskel oder ein anderes Ausdrucksmittel zum Einleiten bzw. Abschließen eines Kontaktes."
Warum soll man denn sich im Fluss eine Gesprächs ständig begrüßen und verabschieden?
Danke für die Mühen! :)

Anzeige
AW: Zellkoordinaten ermitteln
20.01.2015 07:43:01
Klaus
Dein abgebildeter Code läuft bei mir in einer Mustertabelle fehlerfrei. WENN ich aus Combobox1 eine Auswahl treffe, die sich in Zeile 3 auch wiederfinden lässt! Ansonsten gibt es natürlich einen Fehler, da die Formel ins leere gelaufen ist.
Hier nochmal dein Code mit der notwendigsten Fehlerbehandlung:
Sub Test()
Dim Auswahl
Dim sZeileWa
Dim sZeileBu
Dim sSpalteBu
Auswahl = ComboBox1.Value 'Auswahl der ComboBox als Text übernehmen klappt
If Auswahl = "" Then
MsgBox ("Auswahl erforderlich")
Exit Sub
End If
sZeileWa = ComboBox1.ListIndex + 4
'Damit ermittle ich die Zeilennummer, da der ListenIndex ja ab der Fixen Zeile 4 Befüttert wird
'Jetzt die Spalte in der anderen Tabelle finden
On Error GoTo hell
sSpalteBu = WorksheetFunction.Match(Auswahl, Sheets("Buchungen").Rows(3), False)
GoTo heaven:
hell:
MsgBox (Auswahl & " wurde in Zeile 3 nicht gefunden")
heaven:
On Error GoTo 0
End Sub

Anzeige
;
Anzeige

Infobox / Tutorial

Zellkoordinaten in Excel ermitteln


Schritt-für-Schritt-Anleitung

Um die Zellkoordinaten für ein bestimmtes Element in Excel zu ermitteln und den Wert in eine andere Zelle einzutragen, kannst Du die folgenden Schritte ausführen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul: Rechtsklicke im Projekt-Explorer auf dein Arbeitsblatt und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:
Sub EintragVornehmen()
    Dim ArtZeile As Long
    Dim BelSpalte As Long
    Dim Suche As String

    Suche = "Butter" ' Hier den gesuchten Artikel eintragen
    ArtZeile = Worksheets("Bsp").Columns(1).Find(What:=Suche, LookAt:=xlWhole).Row
    BelSpalte = Worksheets("Bsp").Rows(1).Find(What:="Beleg 3", LookAt:=xlWhole).Column
    Worksheets("Bsp").Cells(ArtZeile, BelSpalte).Value = 2 ' Wert eintragen
End Sub
  1. Führe das Makro aus: Du kannst das Makro ausführen, um den Wert in die entsprechende Zelle einzutragen.

Häufige Fehler und Lösungen

  1. Laufzeitfehler '91': Dieser Fehler tritt auf, wenn das gesuchte Element nicht gefunden wird. Stelle sicher, dass der Suchbegriff korrekt ist.

  2. Objekt erforderlich: Achte darauf, dass Du die Variablen korrekt deklariert hast. Ein Beispiel wäre:

Dim Suche As String
Suche = "Beleg3"

Wenn "Suche" nicht zugeordnet wurde, wird dieser Fehler angezeigt.

  1. Fehler bei der Verwendung von Match: Wenn Du die Match-Funktion verwendest, stelle sicher, dass die gesuchte Zeile und Spalte existieren. Füge eine Fehlerbehandlung hinzu, um dies zu prüfen.

Alternative Methoden

Ein alternativer Ansatz könnte die Verwendung von Application.Match sein. Hier ein Beispiel:

Sub AlternativeSuche()
    Dim sZeile As Variant
    Dim sSpalte As Variant
    Dim Suche As String

    Suche = "Beleg3"
    sSpalte = Application.Match(Suche, Sheets("Buchungen").Rows(3), 0)

    If IsError(sSpalte) Then
        MsgBox "Beleg nicht gefunden."
    Else
        MsgBox "Beleg gefunden in Spalte: " & sSpalte
    End If
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, die Dir helfen, die Logik besser zu verstehen:

  1. Eintrag für Artikel Wurst:

    ArtZeile = Worksheets("Bsp").Columns(1).Find("Wurst").Row
    BelSpalte = Worksheets("Bsp").Rows(1).Find("Beleg 1").Column
    Worksheets("Bsp").Cells(ArtZeile, BelSpalte).Value = 15
  2. Eintrag für Artikel Brot:

    ArtZeile = Worksheets("Bsp").Columns(1).Find("Brot").Row
    BelSpalte = Worksheets("Bsp").Rows(1).Find("Beleg 2").Column
    Worksheets("Bsp").Cells(ArtZeile, BelSpalte).Value = 12

Tipps für Profis

  • Verwende With-Anweisungen: Dies kann Deinen Code sauberer und leichter lesbar machen.
With Worksheets("Bsp")
    .Cells(ArtZeile, BelSpalte).Value = 2
End With
  • Fehlerbehandlung einbauen: Nutze On Error GoTo, um Fehler abzufangen und entsprechend zu reagieren.

  • Variablen sinnvoll benennen: Eine klare Benennung hilft, den Code verständlicher zu machen.


FAQ: Häufige Fragen

1. Wie finde ich die Zeile eines Artikels? Verwende die Find-Methode, um die Zeile des gesuchten Artikels zu ermitteln, wie im Beispiel gezeigt.

2. Was mache ich, wenn mein Suchbegriff nicht gefunden wird? Implementiere eine Fehlerbehandlung, um eine klare Rückmeldung zu bekommen, wenn der Begriff nicht gefunden wird.

3. Kann ich die Suche auch auf ein anderes Arbeitsblatt ausführen? Ja, Du kannst die Sheets("Name")-Anweisung verwenden, um auf ein bestimmtes Arbeitsblatt zuzugreifen.

4. Was ist der Unterschied zwischen Find und Match? Find sucht nach einem bestimmten Wert in einem Bereich und gibt die Zelle zurück, während Match die Position eines Wertes in einem Array zurückgibt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige