ExcelVBA-Bereich B soll Bezug auf Bereich A nehmen

Hallo zusammen,

ich versuche momentan ein Makro zu entwickeln mit dem ich Zellen in einem Bereich einfärben kann wenn der Wert der korrelierenden Zelle im anderen Bereich kleiner als 1 ist. Die Bereiche liegen auf verschiedenen Tabellenblättern. (Intensities und p-values)

Ich habe in zwei kleinen Makros die Bereiche bereits definiert:

Sub SheetIntensitiesBereichDefinieren()

Dim di As Range ’ data intensities
Dim dpv As Range ’ data p values

Sheets(„intensities“).Activate
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate

ActiveCell.Select

Worksheets(„intensities“).Activate
Set di = Sheets(„intensities“).Range(„D2:“ & ActiveCell.Offset(0, -1).Address)

ActiveWorkbook.Names.Add _
Name:=„Data_Intensities“, _
RefersTo:=di, Visible:=True
di.Select

End Sub

Sub SheetPvaluesBereichDefinieren()

Dim di As Range ’ data intensities
Dim dpv As Range ’ data p values

Sheets(„p-values“).Activate
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate

ActiveCell.Select

Worksheets(„p-values“).Activate
Set dpv = Sheets(„p-values“).Range(„D2:“ & ActiveCell.Offset(0, -1).Address)

ActiveWorkbook.Names.Add _
Name:=„Data_pValues“, _
RefersTo:=dpv, Visible:=True
dpv.Select

End Sub

Nun möchte ich, dass die Zellen im Tabellenblatt „p-values“ eingefärbt werden wenn die entsprechende Zelle im Tabellenblatt „Intensities“ einen Wert kleiner als 1 aufweist.

Ich hoffe ich habe es einigermaßen verständlich ausgedrückt :smile:

Danke und Gruß

Micha

ich versuche momentan ein Makro zu entwickeln mit dem ich
Zellen in einem Bereich einfärben kann wenn der Wert der
korrelierenden Zelle im anderen Bereich kleiner als 1 ist. Die
Bereiche liegen auf verschiedenen Tabellenblättern.
(Intensities und p-values)
Ich habe in zwei kleinen Makros die Bereiche bereits
definiert:

Hallo Micha,

mal erstmal nur zu deinen Makros.
Angenommen du hast einen benutzten Bereich von A1:X100

Wenn ich deinen Code richtig deute soll dann für den Bereich D2:W100 ein Name vergeben werden.
Im anderen Blatt dann genau so.
Ist das richtig so?

Wenn ja, wofür brauchst du diese Bereichsnamen?
Für deine Anfrage wegen des Färbens m.E. nicht.

Gruß
Reinhard

mal erstmal nur zu deinen Makros.
Angenommen du hast einen benutzten Bereich von A1:X100:

Wenn ich deinen Code richtig deute soll dann für den Bereich
D2:W100 ein Name vergeben werden.
Im anderen Blatt dann genau so.
Ist das richtig so?

Richtig - der Datenbereich ist variabel in der Größe. Er startet bei D2 und geht bis letzten Zelle der vorletzten Spalte.

Wenn ja, wofür brauchst du diese Bereichsnamen?
Für deine Anfrage wegen des Färbens m.E. nicht.

Ich hatte die Bereichsnamen angedacht um den Zugriff auf den Datenbereich zu vereinfachen. Wenn die erste Zelle des Datenbereiches A einen Wert von >0,1 aufweist dann soll im Datenbereich B die entsprechende Zelle rot eingefärbt werden.

Danke und Gruß
Micha

Halllo Micha,

ungetestet:

Sub tt()
Dim wksI As Worksheet, wksP As Worksheet, Zei As Long, Spa As Long
Set wksI = Worksheets("intensities")
Set wksP = Worksheets("p-values")
With wksP
 .UsedRange.Interior.ColorIndex = xlNone
 For Zei = 2 To wksI.Cells(Rows.Count, "D").End(xlUp).Row
 For Spa = 4 To wksI.Cells.SpecialCells(xlCellTypeLastCell).Column - 1
 If .Cells(Zei, Spa).Value \> 1 Then wksP.Cells(Zei, Spa).Interior.ColorIndex = 3
 Next Spa
 Next Zei
End With
End Sub

Gruß
Reinhard

Funktioniert wunderbar. Vielen herzlichen Dank!

Gruß Micha