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
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
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Gast am Mi., 19.05.2004 - 15:54
Permalinkwenn 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
Gespeichert von Imke am Mi., 19.05.2004 - 16:09
PermalinkpMap.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
Gespeichert von Gast am Mi., 19.05.2004 - 16:43
Permalink> 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
Gespeichert von Imke am Mo., 24.05.2004 - 10:14
Permalinkhat geklappt, vielen Dank.
Gruß Imke Dörge