online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Nemesis123 vom 05.02.2021, 11:04 Options

Excel - VBA - Spalten nach Eintrag überprüfen

Hallo zusammen,

bin totaler VBA-Anfänger, aber nachdem ich hier schon viele sehr hilfreiche Einträge fand, hätte ich eine Frage zu der ich leider noch kein genaues Post gefunden hab.

Ausgangssituation:
Ich habe eine Tabelle mit Artikeln, in welcher jede Zeile einen Artikel und jede Spalte der Tabelle eine von vielen Eigenschaft des Artikels (z. B. "Neu" o. "Gebraucht") zugeweist. An der entsprechenden Stelle hab ich ein "x" als Markierung gemacht, z. B. ein neuer Artikel mit einem "x" in der jeweiligen Zelle.

Fragestellung:
Nun versuche ich gerade einen VBA-Code zu schreiben, der mir nach einer Auswahl verschiedener Eigenschaften die Tabelle nach Artikeln untersucht, welche all diese Eigenschaften besitzen. Anschließend sollen mir nur diese Artikel auf einem neuen Tabellenblatt angezeigt werden. (Über Auto-Filtern habe ich schon nachgedacht, kommt aber leider nicht in Frage.)

Einige potentielle Teile des Codes konnte ich mir selber zusammen suchen, aber leider weiss ich nicht, wie ich beginnen soll. Ich fand einige ähnliche Posts (z. B. http://www.ms-office-forum.net/forum/showthread.php?p=1105284 und andere auf die ich leider nicht zugreifen konnte), aber da meine VBA-Kenntnisse sehr gering sind, versuche ich mich nun schon seit Stunden an dem Problem.

Kann mir jemand helfen?
Danke im voraus! Liebe Grüße! :P


Antwort schreiben

Antwort 1 von nighty vom 05.02.2021, 12:05 Options

hi nemesis ^^

bitte um schrittweise erklaerung des wunsches :-)

gruss nighty

Antwort 2 von Nemesis123 vom 05.02.2021, 12:55 Options

Hi Nighty,

ich habe mir das ganze so vorgestellt, dass ich ich mir ein variantes Array erstelle mit den Eigenschaften der Produkte. Dazu habe ich schon folgendes zusammengeschrieben:

Private Sub CommandButton1_Click()
    
    ' Array für Eigenschaften definieren
    Sheets("Step I & II").Select
    Dim varArray As Variant
    Dim lngEnde As Long
    lngEnde = Range("E65536").End(xlUp).Row
    varArray = Range("H10:AE" & lngEnde)
End Sub


In diesem Array entspricht jede Position eines "x" einer Eigenschaft eines Artikels (wie in meiner Excel-Tabelle). Jetzt versuche ich die meine Einträge (also die "x" in meiner Tabelle) in das Array einzulesen. Jedoch hab ich keine Ahnung wie, denn bin hab wirklich erst Anfang der Woche zum ersten Mal etwas von VBA gehört ... :Z

Liebe Grüße!

Antwort 3 von nighty vom 05.02.2021, 13:52 Options

hi nemesis ^^

ein ansatz vielleicht :-))

gruss nighty

Sub Beispiel()
    Dim lngEnde As Long
    Sheets("Step I & II").Select
    lngEnde = Range("E" & Rows.Count).End(xlUp).Row
    ReDim varArray(lngEnde, 24) As Variant
    'beachte das bei einer eventuellen rueckschreibung der bereich nicht von der groesse abweichen darf
    varArray() = Range("H1:AE" & lngEnde)
    For y = 10 To lngEnde
        For x = 1 To 24
            ' beachte das x+7(spalte h waere die 8) dein spaltenindex ist
            If varArray(y, x) = "bla" Then
                'blabla
                'bei weiterer suche kein exit for
                Exit For
            End If
        Next x
    Next y
End Sub

Antwort 4 von nighty vom 05.02.2021, 13:55 Options

hi nemesis ^^

x als long y als integer sollten noch deklariert werden :-))

gruss nighty

Antwort 5 von Nemesis123 vom 05.02.2021, 14:31 Options

Hab nach deinem Vorbild mal hier was probiert (mti meinen Variablen), aber das Array das herauskommt enthält keine Daten aus meiner Tabelle. Wie kann das kommen?

Private Sub CommandButton1_Click()

    
    ' Array definieren
    Sheets("Step I & II").Select
    Dim varArray As Variant
    Dim lngEnde As Long
    lngEnde = Range("E65536").End(xlUp).Row
    varArray = Range("H10:AE" & lngEnde)
    Signaturarray = varArray
    
    ' Signaturen einlesen
    Dim Signatur As String 'Markierung in Form von "x"
    Dim n As Long 'Zeilenindex in Excel-Sheet
    Dim i As Long 'Spaltenindex in Excel-Sheet
    Dim m As Long 'Zeilenindex in Array
    Dim l As Long 'Spaltenindex in Array
    
    n = 10 'Startzeile in Excel-Sheet
    i = 8 'Startspalte in Excel-Sheet
    m = n - 9 'Startzeile in Array
    l = i - 7 'Startzeile in Excel-Sheet
    
    
    For n = 10 To lngEnde
        For i = 8 To 31
        
        Signatur = Sheets("Step I & II").Cells(n, i).Value
        
            If Signatur = "x" Then
            varArray(m, l) = "x"
            Else
            varArray(m, l) = ""
            End If
            
        Next i
    Next n
    
End Sub
 


Was hab ich hier falsch gemacht?

Antwort 6 von nighty vom 05.02.2021, 14:51 Options

hi nemesis ^^

gruss nighty

' Array definieren
Dim lngEnde As Long
Sheets("Step I & II").Select
lngEnde = Range("E" & Rows.Count).End(xlUp).Row
ReDim varArray(lngEnde,24) As Variant
ReDim Signaturarray(lngEnde,24) As Variant
varArray = Range("H10:AE" & lngEnde)
Signaturarray() = varArray()

Antwort 7 von nighty vom 05.02.2021, 14:53 Options

hi nemesis ^^

gruss nighty

ups da war noch was :-)

   ' Array definieren
    Dim lngEnde As Long
    Sheets("Step I & II").Select
    lngEnde = Range("E" & Rows.Count).End(xlUp).Row
    ReDim varArray(lngEnde, 24) As Variant
    ReDim Signaturarray(lngEnde, 24) As Variant
    varArray() = Range("H10:AE" & lngEnde)
    Signaturarray() = varArray()

Antwort 8 von nighty vom 05.02.2021, 14:59 Options

hi nemesis ^^

bei der zuweisung bleib ruhig bei 1 statt 10,dann bleibst du parallel zur tabelle bei der y achse oder du musst spaeter 9 addieren bei gebrauchten werten,bei der for next schleife dann bei 10 beginnen

gruss nighty

Antwort 9 von Nemesis123 vom 05.02.2021, 15:03 Options

Hey, vielen Dank nochmal für die Hilfe!
jetzt läuft's irgendwie wie ich's wollte! :P
danke nochmal!

Antwort 10 von nighty vom 05.02.2021, 15:25 Options

hi nemesis ^^

was die fehlersuche ungemein erleichtert ist der schrittweise modus ueber f8 im vb editor,dort kannst du auch den aktuellen wert der variablen kontrollieren

eine oberflaechliche einarbeitung des vbed erleichtert ungemein :-))

noch als tip

setze vor jedem makro
Option Explicit
zwingt dich variablen zu deklarieren

viele fehler entstehen durch fehlenden oder falsche deklaration,erstere erzeugt immer einen variant,andere erzeugt falsche oder gar keine werte

gruss nighty

Ähnliche Themen

Excel: Zelleninhalt auf Bitmaps überprüfen?
Flutsch  28.02.2008 - 53 Hits - 1 Antwort

Excel: Feld auf Formatierung überprüfen
der-bettler  01.04.2008 - 38 Hits - 4 Antworten

Mehr Spalten in Excel
jjgwlw  04.08.2008 - 10 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026