Habe versucht einem Makro Variablen hinzuzufügen..

Bild

Betrifft: Habe versucht einem Makro Variablen hinzuzufügen..
von: Jenny
Geschrieben am: 31.05.2015 17:20:37

... und jetzt funktioniert es nicht mehr. Könnt ihr mir bitte helfen?
Hallo erstmal,
Die 4 Fett und kursiv geschrieben Teile habe ich zu einem ohne diese Teile funktionierenden Makro hinzugefügt. Jetzt wird allerdings das was in den Variablen nix4 - nix7 steht mitkopiert, obwohl das Makro eigentlich genau dazu dienen soll diese 7 Texte nicht zu kopieren.
Was habe ich falsch gemacht?
Die Texte in nix1-3 werden nach wie vor wie es sein soll, außen vorgelassen.
Danke
Jenny

Sub In_einer_Spalte_zusammenfassen()
    
    Sheets.Add After:=ActiveSheet
    ActiveSheet.Name = "Käsekuchen"
    
    Dim imdb As Worksheet, noimdb As Worksheet, alle As Worksheet
    Dim z_imdb As Double, z_noimdb As Double
    Dim rng1 As Range, rng2 As Range
    Dim nix1 As String, nix2 As String, nix3 As String, nix4 As String, nix5 As String,  _
nix6 As String, nix7 As String
    Dim i As Double, ziel As Range
    
        Set imdb = Worksheets("imdb")
        Set noimdb = Worksheets("no imdb")
        Set alle = Worksheets("Käsekuchen")
        
        z_imdb = imdb.UsedRange.Rows.Count
        z_noimdb = noimdb.UsedRange.Rows.Count
        
        Set rng1 = imdb.Range(imdb.Cells(1, 3), imdb.Cells(z_imdb, 10))
        Set rng2 = noimdb.Range(noimdb.Cells(1, 2), noimdb.Cells(z_noimdb, 17))
        
        nix1 = "unknown"
        nix2 = "unknowns"
        nix3 = "na"
        nix4 = "+ more"
        nix5 = "None"
        nix6 = "Uniknowns"
        nix7 = "others"
    
        i = 1
        Set ziel = alle.Cells(i, 1)
    
   
    For Each Cell In rng1
        If Trim(Cell.Value) <> "" Then
            If Cell.Font.Color = RGB(255, 0, 0) Then
                If LCase(Trim(Cell.Value)) <> nix1 And LCase(Trim(Cell.Value)) <> nix2 And _
LCase(Trim(Cell.Value)) <> nix3 And LCase(Trim(Cell.Value)) <> nix4 <> nix5 <> nix6 <>  _
nix7 Then
                    ziel = Cell.Value
                    i = i + 1
                    Set ziel = alle.Cells(i, 1)
                    ziel.Select
                Else
                End If
            Else
            End If
        Else
        End If
    Next
    
    For Each Cell In rng2
        If Trim(Cell.Value) <> "" Then
                If LCase(Trim(Cell.Value)) <> nix1 And LCase(Trim(Cell.Value)) <> nix2 And _
LCase(Trim(Cell.Value)) <> nix3 And LCase(Trim(Cell.Value)) <> nix4 <> nix5 <> nix6 <>  _
nix7 Then
                    ziel = Cell.Value
                    i = i + 1
                    Set ziel = alle.Cells(i, 1)
                    ziel.Select
                Else
                End If
        Else
        End If
    Next
End Sub

Bild

Betrifft: AW: Habe versucht einem Makro Variablen
von: Crazy Tom
Geschrieben am: 31.05.2015 17:38:18
Hallo Jenny
für den ersten If-Fall

If LCase(Trim(Cell.Value)) <> nix1 _
And LCase(Trim(Cell.Value)) <> nix2 _
And LCase(Trim(Cell.Value)) <> nix3 _
And LCase(Trim(Cell.Value)) <> nix4 _
And LCase(Trim(Cell.Value)) <> nix5 _
And LCase(Trim(Cell.Value)) <> nix6 _
And LCase(Trim(Cell.Value)) <> nix7 Then

den zweiten Teil wirst du dann doch bestimmt angepasst bekommen
MfG Tom

Bild

Betrifft: AW: Habe versucht einem Makro Variablen hinzuzufügen..
von: Sepp
Geschrieben am: 31.05.2015 17:42:54
Hallo Jenny,
zwei Möglichkeiten, obwohl es elegantere Wege gibt.

Sub In_einer_Spalte_zusammenfassen()
  Dim imdb As Worksheet, noimdb As Worksheet, alle As Worksheet
  Dim z_imdb As Double, z_noimdb As Double
  Dim rng1 As Range, rng2 As Range, rng As Range
  Dim nix1 As String, nix2 As String, nix3 As String, nix4 As String
  Dim nix5 As String, nix6 As String, nix7 As String
  Dim i As Double, ziel As Range
  
  Sheets.Add After:=ActiveSheet
  ActiveSheet.Name = "Käsekuchen"
  
  Set imdb = Worksheets("imdb")
  Set noimdb = Worksheets("no imdb")
  Set alle = Worksheets("Käsekuchen")
  
  z_imdb = imdb.UsedRange.Rows.Count
  z_noimdb = noimdb.UsedRange.Rows.Count
  
  Set rng1 = imdb.Range(imdb.Cells(1, 3), imdb.Cells(z_imdb, 10))
  Set rng2 = noimdb.Range(noimdb.Cells(1, 2), noimdb.Cells(z_noimdb, 17))
  
  nix1 = "unknown"
  nix2 = "unknowns"
  nix3 = "na"
  nix4 = "+ more"
  nix5 = "None"
  nix6 = "Uniknowns"
  nix7 = "others"
  
  i = 1
  Set ziel = alle.Cells(i, 1)
  
  
  For Each rng In rng1
    If Trim(rng.Value) <> "" Then
      If rng.Font.Color = RGB(255, 0, 0) Then
        If LCase(Trim(rng.Value)) <> nix1 And _
          LCase(Trim(rng.Value)) <> nix2 And _
          LCase(Trim(rng.Value)) <> nix3 And _
          LCase(Trim(rng.Value)) <> nix4 And _
          LCase(Trim(rng.Value)) <> nix5 And _
          LCase(Trim(rng.Value)) <> nix6 And _
          LCase(Trim(rng.Value)) <> nix7 Then
          
          ziel = rng.Value
          i = i + 1
          Set ziel = alle.Cells(i, 1)
          ziel.Select 'wozu?
        End If
      End If
    End If
  Next
  
  'oder
  For Each rng In rng2
    If Trim(rng.Value) <> "" Then
      Select Case LCase(Trim(rng.Value))
        Case nix1, nix2, nix3, nix4, nix5, nix6, nix7
        Case Else
          ziel = rng.Value
          i = i + 1
          Set ziel = alle.Cells(i, 1)
          ziel.Select
      End Select
    End If
  Next
  
End Sub


Gruß Sepp


Bild

Betrifft: AW: Habe versucht einem Makro Variablen hinzuzufügen..
von: Jenny
Geschrieben am: 31.05.2015 17:53:10
Hallo erstmal,
ich verzweifele langsam
habe jetzt die Version von Sepp benutzt, Original so wie sie da steht,, nix5 und nix6 werden immer noch kopiert, die anderen nicht.
Ich bin ratlos.
Gruß
Jenny

Bild

Betrifft: AW: Habe versucht einem Makro Variablen hinzuzufügen..
von: Sepp
Geschrieben am: 31.05.2015 17:54:53
Hallo Jenny,
"Ich bin ratlos"
deine Strings enthalten Großbuchstaben, du vergleichst aber mit LCase()!

Gruß Sepp


Bild

Betrifft: AW: Habe versucht einem Makro Variablen hinzuzufügen..
von: Jenny
Geschrieben am: 31.05.2015 17:57:07
Hallo Sepp,
hast vielleicht überlesen, dass ich ziemliche Anfängerin bin, was VBA anbelangt, das Originalmakro stammt von einem deiner netten Kollegen hier, ok, das mit dem Käsekuchen war ich.
Ich hab versucht, mir durch Logik weitere Begriffe hinzuzufügen, aber nicht durch fundiertes VBA Wissen.
Mit anderen Worten, ich weiß weder was LCase macht, noch was ich stattdessen hätte nehmen sollen.
LG
Jenny

Bild

Betrifft: AW: Habe versucht einem Makro Variablen hinzuzufügen..
von: Sepp
Geschrieben am: 31.05.2015 18:01:02
Hallo Jenny,
ist schon OK, wir alle haben mal so angefangen.
LCase() wandelt eine Zeichenfolge in Kleinschreibung um.
Schreib deine Suchstrings ebenfalls in Kleinschreibung.
Wenn du Hilfe zu einer Funktion oder Methode benötigst, dann setze den Cursor auf das Wort und drücke F1, dann öffnet sich die VBA-Hilfe zum entsprechenden Suchbegriff.

Gruß Sepp


Bild

Betrifft: AW: Habe versucht einem Makro Variablen hinzuzufügen..
von: Jenny
Geschrieben am: 31.05.2015 18:16:38
Hallo Sepp,
ja jetzt funktionierts,
mir ist grad eingefallen, dass ich dich noch um einen kleinen Gefallen bitten könnte, nur wenn es nicht allzuviel Arbeit macht.
Es stehen Titel in no imdb Spalte A und imdb Spalte B.
Kann man das so machen, dass zu den Texten die bereits kopiert werden noch der Titel aus der selben Zeile kopiert wird? (und dann in Käsekuchen Spalte B eingefügt wird).
LG
Jenny

Bild

Betrifft: AW: Habe versucht einem Makro Variablen hinzuzufügen..
von: Sepp
Geschrieben am: 31.05.2015 18:40:55
Hallo Jenny,
ungetestet.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub In_einer_Spalte_zusammenfassen()
  Dim imdb As Worksheet, noimdb As Worksheet, alle As Worksheet
  Dim z_imdb As Double, z_noimdb As Double
  Dim rng1 As Range, rng2 As Range, rng As Range
  Dim nix1 As String, nix2 As String, nix3 As String, nix4 As String
  Dim nix5 As String, nix6 As String, nix7 As String
  Dim i As Double, ziel As Range
  
  Sheets.Add After:=ActiveSheet
  ActiveSheet.Name = "Käsekuchen"
  
  Set imdb = Worksheets("imdb")
  Set noimdb = Worksheets("no imdb")
  Set alle = Worksheets("Käsekuchen")
  
  z_imdb = imdb.UsedRange.Rows.Count
  z_noimdb = noimdb.UsedRange.Rows.Count
  
  Set rng1 = imdb.Range(imdb.Cells(1, 3), imdb.Cells(z_imdb, 10))
  Set rng2 = noimdb.Range(noimdb.Cells(1, 2), noimdb.Cells(z_noimdb, 17))
  
  nix1 = "unknown"
  nix2 = "unknowns"
  nix3 = "na"
  nix4 = "+ more"
  nix5 = "none"
  nix6 = "uniknowns"
  nix7 = "others"
  
  i = 1
  
  For Each rng In rng1
    If Trim(rng.Value) <> "" Then
      If rng.Font.Color = RGB(255, 0, 0) Then
        Select Case LCase(Trim(rng.Value))
          Case nix1, nix2, nix3, nix4, nix5, nix6, nix7
          Case Else
            alle.Cells(i, 1) = rng.Value
            alle.Cells(i, 2) = imdb.Cells(rng.Row, 1).Value
            i = i + 1
        End Select
      End If
    End If
  Next
  
  For Each rng In rng2
    If Trim(rng.Value) <> "" Then
      Select Case LCase(Trim(rng.Value))
        Case nix1, nix2, nix3, nix4, nix5, nix6, nix7
        Case Else
          alle.Cells(i, 1) = rng.Value
          alle.Cells(i, 2) = noimdb.Cells(rng.Row, 2).Value
          i = i + 1
      End Select
    End If
  Next
  
End Sub


Gruß Sepp


Bild

Betrifft: AW: Habe versucht einem Makro Variablen hinzuzufügen..
von: Jenny
Geschrieben am: 31.05.2015 18:48:02
Hallo Sepp,
dir war ein kleiner Fehler unterlaufen, aber das hab ich selbst geschafft zu ändern.

alle.Cells(i, 2) = imdb.Cells(rng.Row, 1).Value
und
alle.Cells(i, 2) = noimdb.Cells(rng.Row, 2).Value
ich wollte in noimdb die Spalte A und in imdb die Spalte B. Wie gesagt das hab ich selbst ändern können.
Auf jedenfall trotzdem vielen Dank für die viele Mühe.
Jenny

Bild

Betrifft: AW: Habe versucht einem Makro Variablen hinzuzufügen..
von: Sepp
Geschrieben am: 31.05.2015 19:01:01
Hallo Jenny,
deshalb schrieb ich ja "ungetestet", aber so lernt man;-)

Gruß Sepp


Bild

Betrifft: AW: Habe versucht einem Makro Variablen hinzuzufügen..
von: Jenny
Geschrieben am: 31.05.2015 19:26:46
habs ja auch hinbekommen, danke für die Lektion und noch einen schönen Sonntag.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Habe versucht einem Makro Variablen hinzuzufügen.."