GeomarketingForum.com
September 05, 2010, 10:22:37 *
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
News: Jetzt beim GeoMarketingforum.com registrieren ...
Denn nur wer mitmacht, ist "eigentlich" INFORMIERT !
 
   Übersicht   Hilfe Suche Kalender Login Registrieren  
Seiten: [1]
  Drucken  
Autor Thema: Diskussion zum Makro "Bewerte Daten mit ABC" (VBA-Hilfe)  (Gelesen 1366 mal)
admin
Administrator
Full Member
*****
Beiträge: 111


Profil anzeigen E-Mail
« am: November 01, 2006, 08:20:03 »

Zitat
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
« Letzte Änderung: Februar 09, 2007, 07:32:56 von admin » Gespeichert
Seiten: [1]
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2007, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS