Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1604to1608
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

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige