Bewerte Daten mit ABC
Public Sub EvaluateObjects2ABC()
Dim layUsed As rgLayer
Dim ColData As Integer
Dim ColABC As Integer
Dim sLayerName As String
Dim i As Long
Dim dValue As Double
' ... Variablen für Spalten initialisieren
' ... Immer bedenken: Die erste Spalte hat den Index 0
' ... Index für Datenspalte
ColData = 2
' ... Index für Bewertungsspalte
ColABC = 3
' ... Name des Layers
sLayerName = "Umsätze"
' ... Hier auf Layer verweisen
Set layUsed = Project.SearchLayerByName(sLayerName)
If layUsed Is Nothing Then
' ... Meldung
MsgBox "Layer kann nicht gefunden weden"
Exit Sub
End If
If Not layUsed.Loaded Then
MsgBox "Layer nicht geladen"
Exit Sub
End If
' ... Testen ob Datenspalte numerisch (hier: nicht Text) und ABC-Spalte Text ist.
If layUsed.ColumnDef(ColData).DataType = dtString Then
' ... Meldung
MsgBox "Datenspalte ist keine Numerische Spalte!"
Exit Sub
End If
If Not (layUsed.ColumnDef(ColABC).DataType = dtString) Then
' ... Meldung
MsgBox "ABC-Spalte ist keine Textspalte!"
Exit Sub
End If
' ... Alle Objekte des Layers durchlaufen
For i = 0 To layUsed.ObjectCount - 1
' ... Wert des "i-ten" Objekts in der Spalte "ColData"
' des Layer layUsed auslesen
dValue = layUsed.GetValue(i, ColData)
' ... Bewerten
Select Case dValue
Case Is > 100000
' ... Wenn größer 100000: "A" in Spalte schreiben
layUsed.SetValue i, ColABC, "A"
Case 50000 To 100000
' ... Von 50000 bis 100000: "B" in Spalte schreiben
layUsed.SetValue i, ColABC, "B"
Case Is < 50000
' ... Wenn kleiner 50000: "C" in Spalte schreiben
layUsed.SetValue i, ColABC, "C"
End Select
Next i
' ... Wenn gewollt, Layer speichern
' layUsed.Save
' ... Wenn eine Landkarte aktiv, dann refreshen
If Not ActiveMap Is Nothing Then
ActiveMap.Refresh
End If
MsgBox "Daten wurden bewertet!"
End Sub