Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1428to1432
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Habe versucht einem Makro Variablen hinzuzufügen..

Habe versucht einem Makro Variablen hinzuzufügen..
31.05.2015 17:20:37
Jenny

... 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

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Habe versucht einem Makro Variablen
31.05.2015 17:38:18
Crazy Tom
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

AW: Habe versucht einem Makro Variablen hinzuzufügen..
31.05.2015 17:42:54
Sepp
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

Anzeige
AW: Habe versucht einem Makro Variablen hinzuzufügen..
31.05.2015 17:53:10
Jenny
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

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

AW: Habe versucht einem Makro Variablen hinzuzufügen..
31.05.2015 17:57:07
Jenny
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

Anzeige
AW: Habe versucht einem Makro Variablen hinzuzufügen..
31.05.2015 18:01:02
Sepp
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

AW: Habe versucht einem Makro Variablen hinzuzufügen..
31.05.2015 18:16:38
Jenny
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

Anzeige
AW: Habe versucht einem Makro Variablen hinzuzufügen..
31.05.2015 18:40:55
Sepp
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

Anzeige
AW: Habe versucht einem Makro Variablen hinzuzufügen..
31.05.2015 18:48:02
Jenny
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

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

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

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige