Maßstab festlegen

Hallo,

ich bin noch ganz unerfahren in der VBA programmierung. Vielleicht kann mir ja jemand weiterhelfen.

Ich möchte auf eine Funktion/Prozedur oder ähnliches schreiben, mit der ich auf einen Punkt zommen und den dazu passenden Maßstab einstellen kann.

Bisher kann ich die X und Y Koordinate sowie den Maßstab eingeben und auch auf den Punkt zoomen.
allerdings weiß ich jetzt nicht wie ich den Maßstab verändern kann.
Bei mir wird dann immer auf den Maßstab 1:681 gezoomt.

Jede Hilfe ist willkommen.
Vielen Dank schon mal im Vorraus.
Imke Dörge
Hallo Imke,

wenn Du Deinen Code nicht postest, kann man auch nur spekulieren woran es liegt..
Vielleicht kommst Du damit weiter?:

Private Sub DeinButton_Click()
Dim pdoc As IMxDocument
Dim pmap As IMap
Set pdoc = ThisDocument
Set pmap = pdoc.FocusMap
Dim str As String
str = InputBox("Bitte gib einen Maßstab ein: ", "Hallo Imke")
If str = "" Then
Exit Sub
End If
If IsNumeric(str) Then
pmap.MapScale = CDbl(str)
pdoc.ActiveView.Refresh
Else
MsgBox "Der eingegebene Wert ist keine Zahl", vbCritical, "Dösbaddel :-)"
End If
End Sub

Viele Grüße
Jörg Ostendorp
Sorry, hier ist mein Code. ich habe ihn aus vielen beispielen zusammensgeschustert. Die variablen Laenge, Breite und Massstab werden woanders ausgelesen und werden dann beim Aufrufen von "zoomtoPoint" mit übergeben.
pMap.Mapscale=Cdbl(Massstab) hab ich ausprobiert, da kriege ich einen Laufzeitfehler: Objectvariable or with block variable not set.

viele Grüße
Imke Dörge


Dim pApp As IApplication
Dim pDoc As IMxDocument
Dim pMap As esriCore.IMap
Dim pActiveView As IActiveView
Dim pEnv1 As IEnvelope
Dim dXmin As Double, dYmin As Double, _
dXmax As Double, dYmax As Double 'die Eckpunkte
Dim pPoint As IPoint

Dim Laenge As Double 'X-Koordinate auf den Gezoomt werden soll
Dim Breite As Double 'Y-Koordinate
Dim Massstab As Long 'der kartenmaßstab in den gezoomt werden soll
Dim Name As String 'der name des Ortes zu dem gezoomt wird


Public Sub zoomtoPoint(ByVal Laenge As Double, ByVal Breite As Double, Massstab As Long)



Set pDoc = ThisDocument
Set pEnv = pDoc.ActiveView.Extent


Set pEnv1 = New Envelope
Set pPoint = New Point

pEnv1.PutCoords 100, 100, 200, 200

pPoint.PutCoords Laenge, Breite 'parameterzuweisung für Mittelpunkt pPoint

pEnv1.CenterAt pPoint



pEnv1.QueryCoords dXmin, dYmin, dXmax, dYmax





MsgBox "Maßstab: " & Massstab
' hier sollte jetzt stehen wie der Maßstab eingestellt wird.

pDoc.ActiveView.Extent = pEnv1
pDoc.ActiveView.Refresh


End Sub
Hallo Imke,

> pMap.Mapscale=Cdbl(Massstab) hab ich ausprobiert, da kriege ich einen Laufzeitfehler: Objectvariable or with block variable not set.

Ja klar, die Objektvariable "pMap" mußt Du halt auch erst festlegen :-)

Set pMap = pDoc.FocusMap

> MsgBox "Maßstab: " & Massstab
>' hier sollte jetzt stehen wie der Maßstab eingestellt wird.
> pDoc.ActiveView.Extent = pEnv1

Wenn Du zuerst den Maßstab festlegst dann aber auch wieder die Ausdehnung, ist das relativ witzlos, weil mit der Ausdehnung auch wieder der Maßstab verändert wird. Umgekehrt wird ein Schuh draus:

pDoc.ActiveView.Extent = pEnv1
pMap.MapScale = CDbl(Massstab)

Viele Grüße
Jörg Ostendorp
Hallo Jörg,

hat geklappt, vielen Dank.
Gruß Imke Dörge