VBA: Variablem mit selbem Inhalt/Verweis
02.01.2017 11:59:50
Tigerente
dieses Forum hat mir bei einigen meiner VBA-Probleme schon sehr gut weitergeholfen. Nun stoße ich allerdings an den ein oder anderen Punkt, bei dem ich auch aufgrund der mir fehlenden/passenden Such-Schlagworte, keine Lösung gefunden habe.
Worum geht es?
Ich habe mir u.a. eigene Funktionen geschrieben, mit denen ich Daten aus anderen Tabellenblättern ermitteln kann. Funktioniert soweit sehr gut.
Nun ist es so, dass ich für die Bezeichnung "Code" unterschiedliche Eingabemöglichkeiten in meiner Excel-Tabelle habe, die dann auf die entsprechenden Tabellenblätter (Bezeichnung "Bereich_Code") verweisen.
Manche "Code" sind eineindeutig, da gibt es nur ein passendes Tabellenblatt dazu. Jetzt gibt es aber auch die Möglichkeit, dass beispielsweise Code = KF, Code = TF, Code = GF und Code = DF alle dieselben Grundlagendaten haben.
Ich möchte also nicht 4 Tabellenblätter, sondern nur 1 Tabellenblatt erstellen und pflegen. Da die Kombination aus "Bereich" und "Code" viele Varianten hat, möchte ich die identischen Inhalte eben nicht mehrfach pflegen. Wird mit so vielen Tabellenblättern ja auch sehr unübersichtlich.
Ich hoffe ihr versteht, was ich meine.......
Der kursiv stehende Teil ist der, mit dem ich versucht habe die Namen für ein Tabellenblatt zusammenzufassen.
Ergebnis ist, dass Excel zwar rechnet, aber das Ergebnis 0 ist, und somit nicht stimmt.
Sind die Anführungszeichen zu viel? Ohne hat es aber auch nicht funktioniert.
Muss ich "Code" noch zuweisen? Ich hätte gedacht, dass ich es nicht tun muss, da "Code", sowie " _ Bereich" Variablen der Funktion sind.
Function Isolierung(DN, Bereich, Code, Temp)
Dim i As Integer, j As Integer
If Len(DN) = 0 Then
Isolierung = ""
ElseIf Code = "-" Or Bereich = "-" Then
Isolierung = 0
Else
Dim MappenName As String
Dim Isocode As String
Isocode = Code & Temp
If Code = "KF" Or Code = "TF" Or Code = "GF" Then
MappenName = Bereich & "_" & "DF"
ElseIf Code = "KO" Or Code = "TO" Or Code = "GO" Then
MappenName = Bereich & "_" & "DO"
ElseIf Code = "K" Or Code = "T" Or Code = "G" Then
MappenName = Bereich & "_" & "D"
ElseIf Code = "M1" Then
MappenName = Bereich & "_" & "W1"
ElseIf Code = "M2" Then
MappenName = Bereich & "_" & "W2"
Else
MappenName = Bereich & "_" & Code
For i = 5 To 26
If Worksheets(MappenName).Cells(i, 1).Value = DN Then
For j = 3 To 43
If Worksheets(MappenName).Cells(3, j).Value = Isocode Then
Isolierung = Worksheets(MappenName).Cells(i, j).Value
End If
Next j
End If
Next i
End If
End If
End Function
Vielen Dank im Voraus für eure Hilfe!
Möglicherweise sehe ich den Wald vor lauter Bäumen nicht mehr. Ich denke entweder zu einfach, oder was auch gerne mal vorkommt, viel zu kompliziert.
Grüße,
Tigerente