MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 13.02.2018, 13:57   #1
paddy3911
MOF User
MOF User
Standard VBA - Wenn nicht vorhanden dann einfügen

Hi ich würde gerne etwas in eine Tabelle einfügen wenn der Eintrag nicht vorhanden ist. Leider weiß ich hier nicht weiter.

Code:

Dim a As Variant
Dim letzte As Long
Dim i As Long
Dim wksQ As Worksheet
Dim wksZ As Worksheet







Set a2 = Worksheets("Import_user")
Set a1 = Worksheets("Datenbank")

 letzte = a1.Cells(a1.Rows.Count, 2).End(xlUp).Row
    For i = 2 To letzte
      a = Application.Match(a1.Cells(i, 2), a2.Columns(3), 0)
        If IsNumeric(a) Then
          a1.Cells(i, 4).Value = a1.Cells(i, 4).Value
          
          Else
          ???
          End If
          
 
 
    Next
    
Set a2 = Nothing
Set a1 = Nothing
Wie muss ich ??? ergänzen um in die letzte freie Zeile Werte aus a2 Spalte B einzufügen?

Danke Euch
paddy3911 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 14:42   #2
paddy3911
Threadstarter Threadstarter
MOF User
MOF User
Standard

Ich habe es jetzt hinbekommen wenn der Eintrag nicht gefunden wird, dass er eine neue Zeile erstellt und dort etwas reinschreibt. Aber leider weiß ich nun nicht wie ich den Wert aus a2 Spalte 4 jetzt in a1 Spalte 2 bringe.

So funktioniert es nicht:
Code:

Dim a As Variant
Dim letzte As Long
Dim i As Long
Dim wksQ As Worksheet
Dim wksZ As Worksheet
Dim sad As Long







Set a2 = Worksheets("Import_user")
Set a1 = Worksheets("Datenbank")

 letzte = a1.Cells(a1.Rows.Count, 2).End(xlUp).Row
 sad = a1.Cells(a1.Rows.Count, 2).End(xlUp).Row + 1
 
    For i = 2 To letzte
      a = Application.Match(a1.Cells(i, 2), a2.Columns(3), 0)
        If IsNumeric(a) Then
          a1.Cells(i, 4).Value = a1.Cells(i, 4).Value
          
          Else
          a1.Cells(sad, 1).Value = a2.Cells(i, 1).Value ??? 'Die Zelle bleibt dann leer
          End If
          
 
 
    Next
    
Set a2 = Nothing
Set a1 = Nothing
paddy3911 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.02.2018, 17:44   #3
rastrans
MOF Koryphäe
MOF Koryphäe
Standard

Hallo,

ich habe mal versucht deinen Code zu verstehen. Ist nicht so ganz einfach!

Code:

Set a2 = Worksheets("Import_user")
Set a1 = Worksheets("Datenbank")
Du nutzt Variablen, die du nicht deklariert hast. Zudem heißen die noch a1 und a2. Dabei hast du doch schon wksQ und wksZ deklariert. Wenn du Variablen richtig benennst, dann ist das mit dem Code auch einfacher zu schreiben und zu verstehen!

Code:

letzte = a1.Cells(a1.Rows.Count, 2).End(xlUp).Row
sad = a1.Cells(a1.Rows.Count, 2).End(xlUp).Row + 1
Mir ist klar was du machst, aber nicht warum!?! In der Zeile sad möchtest du dein Ergebnis speichern, aber was interessiert die die letzte Zeile in a1? Hier kommt vermutlich deine Bezeichnung der Variablen ins Spiel. Du willst doch aus den Import_user die Daten nach Datenbank schreiben, oder? Also willst du alle Daten aus Import_user vergleichen und nicht aus der Datenbank. Also ist dir die Anzahl der Zeilen in der Datenbank erst einmal nicht wichtig. Vermutlich meinst du hier a2

Code:

a1.Cells(i, 4).Value = a1.Cells(i, 4).Value
Warum schreibst du den gleichen Wert nochmal in die Zelle? Der steht doch genau so schon da drin? Und warum willst du irgendetwas machen, wenn du den Eintrag schon gefunden hast. Mach doch dann einfach nichts.

Code:

If Not IsNumeric(a) Then
    a1.Cells(sad, 1).Value = a2.Cells(i, 1).Value
End If
Und hier bin ich völlig verwirrt! Du hast du letzte Zeile in Spalte 2 gesucht, schreibst dein Ergebnis aber in Spalte 1. Du vergleichst die einzelnen Datensätze deiner Datenbank mit dem Inhalt deiner Import_user und schreibst dann den Datensatz der Import_user, dem die Datensatznummer in der Datenbank entspricht, in das neue Feld deiner Datenbank am Ende. Jedoch nicht den Inhalt des Datensatzes von Import_user, der wird vermutlich in Spalte 3 stehen, sondern den Inhalt von der Spalte 1. Die ist vermutlich leer. Zudem schreibst du jedes Ergebnis in genau die gleiche Zelle.
Hört sich nicht plausibel an? GENAU das ist es, was ich meine!

Kommst du damit weiter?
Code:

Sub Einfuegen()
    Dim wsQuelle As Worksheet
    Dim wsZiel As Worksheet
    Dim rng As Range
    Dim lngZeile As Long, lngZeileMax As Long
    Dim lngZeileEinfuegen As Long
    
    Set wsQuelle = Worksheets("Import_user")
    Set wsZiel = Worksheets("Datenbank")
    
    'Letzte beschriebene Zelle in Spalte 3 von Import_user
    lngZeileMax = wsQuelle.Cells(Rows.Count, 3).End(xlUp).Row
    'letzte beschriebene Zelle in Spalte 2 von Datenbank
    lngZeileEinfuegen = wsZiel.Cells(Rows.Count, 2).End(xlUp).Row
    
    'Gehe durch alle Eingaben von Import_user
    For lngZeile = 2 To lngZeileMax
        'Ist der Eintrag bereits in der Datenbank enthalten?
        Set rng = wsZiel.Columns(2).Find(What:=wsQuelle.Cells(lngZeile, 3).Value, LookAt:=xlWhole)
        'Wenn der datensatz nicht vorhanden ist,...
        If rng Is Nothing Then
            'dann in die nächste Zeile
            lngZeileEinfuegen = lngZeileEinfuegen + 1
            'und füge den Inhalt ein.
            wsZiel.Cells(lngZeileEinfuegen, 1).Value = wsQuelle.Cells(lngZeile, 3).Value
        End If
    Next
End Sub

__________________

There are 10 different types of people in the world. Those who understand the binary system and those who not.

Da für die Helfer der einzige Lohn eine Rückmeldung ist, wäre ein kurzes Feedback wünschenswert.
Auch sehen andere User, die ein ähnliches Problem haben, inwiefern die Lösung zur Beseitigung des Problems beigetragen hat.
Übrigens : Hilfreiche und positive Beiträge kann man auch bewerten!
rastrans ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.