PDA

Vollständige Version anzeigen : Matrix Ergebnis ausgabe


stefan N
20.07.2012, 13:40
Ich habe in der Userform 2 comboboxen, diese Lesen jeweils Werte aus einer Excel Tabelle. Jeweils ist jeder ausgegebene Wert in einer anderen Zelle.

Das eine ließt die X-Koordinate aus und wird der Combobox hinzugefügt

Private Sub ComboBox1_DropButtonClick()
Dim z As Long
Dim Zelle As Range
Dim Text As String
Dim index As Integer

For Each Zelle In ActiveSheet.Range("C2:G2")
If Application.WorksheetFunction.IsText(Zelle.Value) Then
For z = 1 To Len(Zelle.Value)
If Zelle.Characters(z, 1).Font.Bold = True Then
Text = Text & Zelle.Characters(z, 1).Text
End If
Next z
With ComboBox1
.AddItem ("" & Text)
End With
Text = ""
End If
Next Zelle
End Sub


und dass andere die Y-Koordinate und gibt die werte in der Combobox aus:

Private Sub DropBerechtigung_DropButtonClick()

Dim rngZelle As Range
Dim strZelle As String
Dim intPos(0 To 2) As Integer
Dim intZ As Integer

For Each rngZelle In ActiveSheet.Range("A1:A30")
strZelle = rngZelle.Value
If strZelle Like "*@*" Then
intPos(0) = InStr(1, strZelle, "@")
For intZ = intPos(0) To 1 Step -1
If Mid(strZelle, intZ, 1) = " " Then Exit For
Next intZ
intPos(1) = intZ - (intZ = 0)
For intZ = intPos(0) To Len(strZelle) Step 1
If Mid(strZelle, intZ, 1) = " " Then Exit For
Next intZ
e = True
intPos(2) = intZ
DropBerechtigung.AddItem Mid(strZelle, intPos(1), intPos(2) - intPos(1))
End If
Next rngZelle
End Sub

Meine Frage wäre nun: wie könnte ich realisieren, dass wenn der 2. Wert in der Combobox ausgewählt wurde, er praktisch sich an den jeweiligen X und Y Koordinaten orientiert und an der stelle an der die beiden sich schneiden die Zelle in der Textbox ausgegeben wird.

Beverly
20.07.2012, 16:02
Hi Stefan,

du kennst jeweils den ListIndex und kannst dann daraus die Zelle ermitteln: DropBerechtigung.Listindex + 1 ist die Zeile und ComboBox1.ListIndex + 4 ist die Spalte somit ist Cells(DropBerechtigung.Listindex + 1, ComboBox1.ListIndex + 4) die gesuchte Zelle.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

stefan N
23.07.2012, 14:02
Vielen Dank Beverly,

es Funktioniert zum Größten teil mit diesem Code:

Public Sub ComboBox1_Change()
ueberpruef1 = 1
If ueberpruef1 = 1 Then
If ueberpruef2 = 1 Then
Wert1 = DropBerechtigung.ListIndex + 3
Wert2 = ComboBox1.ListIndex + 3
TxtBox1.Value = Cells(Wert1, Wert2).Value
End If
End If
End Sub

Public Sub DropBerechtigung_Change()
ueberpruef2 = 1
If ueberpruef2 = 1 Then
If ueberpruef1 = 1 Then
Wert1 = DropBerechtigung.ListIndex + 3
Wert2 = ComboBox1.ListIndex + 3
TxtBox1.Value = Cells(Wert1, Wert2).Value
End If
End If
End Sub

Leider hat er Probleme damit das viele Zellen in der Matrix Verbunden sind und dadruch meist eine Leere Zeile auswählt. Kann mir da einer Helfen?
Grüße
und Vielen Dank euch :)

Beverly
23.07.2012, 15:13
Hi Stefan,

ich gebe dir folgenden Rat: löse alle verbundenen Zellen auf, sonst wirst du nie auf einen grünen Zweig kommen.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Stefan N
23.07.2012, 16:20
Tschuldige habe deinen rat nicht befolgt :D

Habe eine Lösung gefunden für alle die es Interessiert.

Do Until Not IsEmpty(Cells(Wert1, Wert2))
Wert2 = Wert2 - 1
TxtBox1.Value = Cells(Wert1, Wert2).Value
Loop