Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA | Zelle finden Spalte plus 1
#1
Moin zusammen,
ich komme gerade nicht weiter. Ich habe eine Excel Datei, in der in Zelle G5 ein Wert steht. Dieser soll per Button geändert werden. Wenn man auf den Button klickt dann soll in einer anderen Datei in Spalte B der Wert gefunden werden und in der nächsten Zeile der Wert soll in "ThisWorkbook" in Zelle G5 eingefügt werden.

Allerdings... Bekomme ich immer nur den letzten wert der Spalte zurück und nicht den nächsten.
Und ohne dem GoTo weiter, ist Excel scheinbar in einer Dauerschleife.

Ich hoffe, das mir einer helfen kann, Programmieren in PHP und C# bekomme ich hin. aber. VBA ist irgend wie.... Keine Ahnung. XD

Code:
Sub btnPlus()

    Dim varOpenFile As Workbook
    Dim strDatei As String
    Dim strOldValue As String
   
    strOldValue = Range("G5").Value

    strDatei = "Liste Wiegeschein EDV.xlsx"
    Set varOpenFile = Workbooks.Open(strDatei)
   
    For i = 1 To Rows.Count
        If Cells(i + 1, 2) = strOldValue Then
            Cells(i, 2).Copy
            GoTo weiter
    End If
    Next


weiter:
   
    ThisWorkbook.Activate
   
    Range("H5").Select
    ActiveSheet.Paste
    varOpenFile.Close
End Sub
Antworten Top
#2
Hallo,

Deine Angaben sind etwas wirr und widersprüchlich. Versuch es mal so:
Code:
Sub btnPlus()

    Dim varOpenFile As Workbook
    Dim rngFind As Range
    Dim wksSheet As Worksheet
    Dim strDatei As String
  
    Set wksSheet = ActiveSheet
    strDatei = "Liste Wiegeschein EDV.xlsx"
    Set varOpenFile = Workbooks.Open(strDatei)
    Set rngFind = varOpenFile.ActiveSheet.Columns(2).Find(wksSheet.Range("G5").Value)
    If Not rngFind Is Nothing Then
        wksSheet.Range("G5").Value = rngFind.Offset(1, 0).Value
    End If
    varOpenFile.Close False
End Sub
Gruß
Michael
Antworten Top
#3
Der Code macht Sinn. Aber es passiert nichts. Auch wenn ich das rngFind.Offset ändere passiert nichts.

Der IF Teil wird einfach übersprungen

Wenn ich schritt für schritt durchgehe, dann steht in wksSheet.Range("G5").Value Der wert aus der Liste Wiegeschein EDV und nicht aus der Vorlage der Wert 20619
Antworten Top
#4
Dann findet er den Suchbegriff vielleicht nicht in Spalte 2?

Da auch nicht bekannt ist auf welchem Blatt in der geöffneten Datei die Werte stehen, habe ich das aktive genommen. Kannst aber auch statt Activesheet z. B. Sheets(1) für das erste nehmen.
Gruß
Michael
Antworten Top
#5
In der Datei Wiegeschein EDV Volrage heißt die Tabelle WIEGESCHEIN. Diese soll dann die Datei Liste Wiegeschein EDV.xlsx öffnen und dort gibt es nur eine Tabelle mit dem Namen Tabelle1
Antworten Top
#6
Habe ich doch geschrieben. Wenn es nur eine Tabelle gibt, dann ist es ja die erste:
Code:
Sub btnPlus()

    Dim varOpenFile As Workbook
    Dim rngFind As Range
    Dim wksSheet As Worksheet
    Dim strDatei As String
  
    Set wksSheet = ActiveSheet
    strDatei = "Liste Wiegeschein EDV.xlsx"
    Set varOpenFile = Workbooks.Open(strDatei)
    Set rngFind = varOpenFile.Sheets(1).Columns(2).Find(wksSheet.Range("G5").Value)
    If Not rngFind Is Nothing Then
        wksSheet.Range("G5").Value = rngFind.Offset(1, 0).Value
    End If
    varOpenFile.Close False
End Sub

Kommt der Suchbegriff auch in der Tabelle in Spalte 2 vor?
Gruß
Michael
Antworten Top
#7
Ja. Die Zahl habe ich extra raus kopiert. 19 
War auch meine erste vermutung.

Ich hab es trotzdem geändert in:
Code:
Set rngFind = varOpenFile.Worksheets("Tabelle1").Columns(2).Find(wksSheet.Range("G5").Value)

Anbei auch die Beiden Dateien, mit denen ich arbeite.

So zum Hinweis. die gelben Felder sind einfache SVerweise gewesen und in der Liste steht nur Werte. Mehr wird nicht gemacht.

Meine Aufgabe ist lediglich das die Person mit dem Button + und - die Lieferscheine durchgehen soll und diese dann vorne angezeigt bekommt. Die Kür wird dann am ende sein, das es zusätzlich noch einen Button gibt, der dann dafür sorgt, das VBA jeden Lieferschein öffnen soll und diesen automatisch drucken soll.


Angehängte Dateien
.xlsx   Liste Wiegeschein EDV.xlsx (Größe: 15,27 KB / Downloads: 1)
.xlsm   Wiegeschein EDV Vorlage.xlsm (Größe: 22,49 KB / Downloads: 1)
Antworten Top
#8
G5 ist in deiner Datei auch leer! Der Wert steht in F5!

Verbundene Zellen sollte man am besten nicht verwenden.

Suchst Du tatsächlich den Wert darunter? Jetzt hast Du den letzten Lieferschein ausgewählt, also würde er die Nummer löschen?
Gruß
Michael
Antworten Top
#9
Guten Morgen, ich versuche über die Button den nächsten oder den Vorherigen Lieferschein zu bekommen.

Das war der Fehler. Ich hab nicht gesehen, das es eine Verbundene Zelle war. Ich bin davon ausgegangen, das G5 rechtsbündig ist und in F5 rein schreibt.

Vielen Vielen Dank für deine Hilfe! Die Button machen das was Sie sollen. 19  Jetzt kommt die nächste Hürde. Alles ausdrucken.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste