Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Variable und String kombinieren

Variable und String kombinieren
09.02.2018 21:14:03
Michael
Hallo,
ich moechte folgendes tun:
Eine Bedingte Formatierung (folgender Code) soll mit Hilfe einer VERGLEICH-Funktion Zellen färben die Werte enhalten, die bereits in einer anderen Liste enthalten sind. Das ganze soll dynamisch geschehen, deswegen habe ich in der VERGLEICH-Funktion nicht z.B. "$A$2:$A$4", sondern die Variable matchrngad stehen.
ws.Range("Z1:Z4").FormatConditions.Add Type:=xlExpression, _
Formula1:="=VERGLEICH(Z2;matchrngad;0)"
ws.Range("Z1:Z4").FormatConditions(1).Interior.ColorIndex = 40

Matchrngad soll sich wiederum so zusammensetzen:
Dim ws2 As Worksheet
Set ws2 = Tabelle3
Set matchrng = ws2.Range(ws2.Cells(2, jrunner), ws2.Cells(rlast2, jrunner))
matchrngad = "ws2.Name" & "!" & "matchrng.Address"
Denn so würde es ja auch in der Formel der bedingten Formatierung stehen "Paste!$A$2:$A$4".
Leider bekomme ich die Fehlermeldung "Typen unverträglich". Kann mir jemand weiterhelfen?
Vielen Dank im Voraus
Michael
Kompletter Code:
Sub zz()
Dim ws As Worksheet
Set ws = Tabelle1
Dim ws2 As Worksheet
Set ws2 = Tabelle3
Dim rlast2 As Integer
Dim matchrng As Range
Dim jrunner As Integer
Dim matchrngad As Integer
' Das("Z1:Z4")muss dynamisch werden (For-Schleife)
' Delete eibauen
rlast2 = ws2.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For jrunner = 1 To 30
If ws2.Cells(1, jrunner).Value = "Comments" Then
Set matchrng = ws2.Range(ws2.Cells(2, jrunner), ws2.Cells(rlast2, jrunner))
Debug.Print (matchrng.Address)
Debug.Print (ws2.Name)
matchrngad = "ws2.Name" & "!" & "matchrng.Address"
Debug.Print (matchrngad)
End If
Next
ws.Range("Z1:Z4").FormatConditions.Add Type:=xlExpression, _
Formula1:="=VERGLEICH(Z2;matchrngad;0)"
ws.Range("Z1:Z4").FormatConditions(1).Interior.ColorIndex = 40

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable und String kombinieren
09.02.2018 21:19:55
Michael
Ok ich bin ein Lauch -.-. Wenn ich natürlich Dim matchrngad As Integer deklariere kann das nichts werden....
Allerdings funktioniert die bedingte Formatierung so nicht, obwohl mir debug.print jetzt "Paste!$Z$2:$Z$4" zurückgibt
AW: Selbst gelöst :)
09.02.2018 21:33:34
Michael

ws.Range("Z1:Z4").FormatConditions.Add Type:=xlExpression, _
Formula1:="=VERGLEICH(Z2;" & matchrngad & ";0)"
ws.Range("Z1:Z4").FormatConditions(1).Interior.ColorIndex = 40
die "" und die &s haben gefehlt, jetzt läuft es mit folgenden Code:
Sub zz()
Dim ws As Worksheet
Set ws = Tabelle1
Dim ws2 As Worksheet
Set ws2 = Tabelle3
Dim rlast2 As Integer
Dim matchrng As Range
Dim jrunner As Integer
Dim matchrngad As String
Dim ws2nombre As String
Dim matchrngdi As Variant
' Das("Z1:Z4")muss dynamisch werden (For-Schleife)
' Delete eibauen
rlast2 = ws2.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For jrunner = 1 To 30
If ws2.Cells(1, jrunner).Value = "Comments" Then
Set matchrng = ws2.Range(ws2.Cells(2, jrunner), ws2.Cells(rlast2, jrunner))
Debug.Print (matchrng.Address)
Debug.Print (ws2.Name)
ws2nombre = ws2.Name
matchrngdi = matchrng.Address
matchrngad = ws2nombre & "!" & matchrngdi
Debug.Print (matchrngad)
End If
Next
ws.Range("Z1:Z4").FormatConditions.Add Type:=xlExpression, _
Formula1:="=VERGLEICH(Z2;" & matchrngad & ";0)"
ws.Range("Z1:Z4").FormatConditions(1).Interior.ColorIndex = 40

Anzeige
AW: Follow up Frage
09.02.2018 21:43:04
Michael
Bei dieser Kombination bekomme ich eine Fehlermeldung auch wenn ich "ws" vor dem "checkrng" weglasse.
Meldung: "Methode oder Datenobjekt nicht gefunden"
Dim checkrng As Range
Set checkrng = ws.Range(ws.Cells(1, irunner), ws.Cells(rlast, irunner))
ws.checkrng.FormatConditions.Add Type:=xlExpression, _
Formula1:="=VERGLEICH(Z2;" & matchrngad & ";0)"
ws.checkrng.FormatConditions(1).Interior.ColorIndex = 40

ganzer Code:
Sub zz()
Dim ws As Worksheet
Set ws = Tabelle1
Dim ws2 As Worksheet
Set ws2 = Tabelle3
Dim mes As Integer
Dim rlast As Integer
Dim rlast2 As Integer
Dim irunner As Integer
Dim jrunner As Integer
Dim cb2 As OLEObject
Set cb2 = ws.OLEObjects("Combobox1")
Dim lngCriteriaCount As Long
Dim arrCriteria() As String
Dim sSpalte As String
Dim jSpalte As String
Dim Copy_area As Range
Dim paste_area As Range
Dim matchrngad As String
Dim ws2nombre As String
Dim matchrngdi As Variant
Dim checkrng As Range
Dim matchrng As Range
' Delete eibauen
rlast = ws.UsedRange.SpecialCells(xlCellTypeLastCell).Row
rlast2 = ws2.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For irunner = 1 To 30
If ws.Cells(1, irunner).Value = "Comments" Then
Set checkrng = ws.Range(ws.Cells(1, irunner), ws.Cells(rlast, irunner))
For jrunner = 1 To 30
If ws2.Cells(1, jrunner).Value = "Comments" Then
Set matchrng = ws2.Range(ws2.Cells(2, jrunner), ws2.Cells(rlast2, jrunner))
Debug.Print (matchrng.Address)
Debug.Print (ws2.Name)
ws2nombre = ws2.Name
matchrngdi = matchrng.Address
matchrngad = ws2nombre & "!" & matchrngdi
Debug.Print (matchrngad)
End If
Next
ws.checkrng.FormatConditions.Add Type:=xlExpression, _
Formula1:="=VERGLEICH(Z2;" & matchrngad & ";0)"
ws.checkrng.FormatConditions(1).Interior.ColorIndex = 40

Anzeige
AW: Alles erledigt
09.02.2018 21:45:45
Michael
Alles erledigt, sry für den Monolog, vielleicht kann irgendwer was draus mitnehmen :D
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige