xy-Koordinaten einer Zelle



Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: xy-Koordinaten einer Zelle
von: Hannes
Geschrieben am: 11.07.2002 - 09:00:05

Hallo *,

ich möchte in eine genau definierte Zelle eines Excel-Sheets (z.B. B7) per Makro eine Grafik einbringen. Mit Cliparts funktioniert das ganz einfach:

ActiveSheet.Pictures.Insert( "C:\...\...\beispiel.wmf")

... trägt das Bild in die linke obere Ecke der Zelle ein. Aber wie funktioniert das mit einem Rechteck? Hier muss ich immer die xy-Koordinaten eingeben, z.B.:

ActiveSheet.Shapes.AddShape( msoShapeRectangle, 60#, 76.5, 60#, 12.75).Select

Wie bekomme ich also beispielsweise die Koordinaten der Zelle B7 heraus, ohne dass ich die Höhen und Breiten aller Zellen von A1 bis B7 addiere? Eine Funktion ...

ActiveCell.xkoord und ActiveCell.ykoord

... wäre da sehr hilfreich, die gibt es aber nicht!

Gruß Hannes

nach oben   nach unten

Re: xy-Koordinaten einer Zelle
von: MRR
Geschrieben am: 11.07.2002 - 09:07:05

Hallo Hannes,
meinst Du so etwas?

Sub Rechteck()
Dim Anfang As Range, Ende As Range
Dim As Integer
Dim sngHoehe As Single, sngBreite As Single

Set Anfang = Range("A1")
Set Ende = Range("B7")
sngBreite = Ende.Left + Ende.Width
sngHoehe = Anfang.Top + Ende.Top + Ende.Height
With ActiveSheet.Shapes.AddShape(msoShapeRectangle, 120#, 25.5, 240#, 76.5)
  .Select
  .Left = Range("A1").Left
  .Top = Range("A1").Top
  .Width = sngBreite
  .Height = sngHoehe
End With
End Sub


HTH, Matthias

nach oben   nach unten

Ergänzung
von: MRR
Geschrieben am: 11.07.2002 - 09:08:05

natürlich sollte es schonricht variabel sein - ich vergaß...

Sub Rechteck()
Dim Anfang As Range, Ende As Range
Dim As Integer
Dim sngHoehe As Single, sngBreite As Single

Set Anfang = Range("A1")
Set Ende = Range("B7")
sngBreite = Ende.Left + Ende.Width
sngHoehe = Anfang.Top + Ende.Top + Ende.Height
With ActiveSheet.Shapes.AddShape(msoShapeRectangle, 120#, 25.5, 240#, 76.5)
  .Select
  .Left = Anfang.Left
  .Top = Anfang.Top
  .Width = sngBreite
  .Height = sngHoehe
End With
End Sub


nach oben   nach unten

Re: xy-Koordinaten einer Zelle
von: Hans W. Herber
Geschrieben am: 11.07.2002 - 09:10:10

Hallo Hannes,

etwas zu kompliziert gedacht:


Sub Einfuegen()
   Dim rct As Shape
   With ActiveCell
      Set rct = ActiveSheet.Shapes.AddShape(msoShapeRectangle, _
         .Left, .Top, .Width, .Height)
   End With
End Sub

Bitte beachten: Auch hier ist Selektieren Teufelszeug.

hans

nach oben   nach unten

Re: xy-Koordinaten einer Zelle
von: Hannes
Geschrieben am: 11.07.2002 - 09:19:50

Geil!

Das ist genau die Lösung. Und so einfach!

Herzlichen Dank für die schnelle Antwort!

Gruß Hannes


nach oben   nach unten

Re: Ergänzung
von: Hannes
Geschrieben am: 11.07.2002 - 09:23:57

Hallo Matthias,

Herzlichen Dank für die Antwort, aber das war nicht ganz das, was ich wollte. Aber die Lösung von Hans W. Herber passt 100%.

Trotzdem herzlichen Dank für Deine Mühe und schnelle Antwort!

Gruß Hannes


nach oben   nach unten

etwas flexibler....
von: L.Vira
Geschrieben am: 11.07.2002 - 09:34:22

Sub Rechteck()
Dim Z As Range
Set Z = Selection
ActiveSheet.Shapes.AddShape(msoShapeRectangle, Z.Left, Z.Top, Z.Width, Z.Height).Select
End Sub

nach oben   nach unten

Re: etwas flexibler....
von: Hannes
Geschrieben am: 11.07.2002 - 09:55:02

Herzlichen Dank!

wenn ich das richtig sehe entspricht die Lösung der Lösung von Hans W. Herber.

Aber trotzdem herzlichen Dank! Ich finde es wahnsinnig, wie schnell und kompetent hier im Forum auf Problemanfragen geantwortet wird.

Meine Hochachtung!

Gruß Hannes


nach oben   nach unten

Re: etwas flexibler....
von: L.Vira
Geschrieben am: 11.07.2002 - 10:15:12

Nicht ganz, denn bei meinem Code wird das Rechteck der aktuellen Selection angepasst, also wenn mehrere zellen selektiert sind, wird es über alle Zellen angepasst.

nach oben   nach unten

Re: etwas flexibler....
von: Hannes
Geschrieben am: 11.07.2002 - 10:17:40

Stimmt!

Das ist noch das i-Tüpfelchen!

Danke, Hannes


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Copy/Paste funktion für bestimmten Range sperren"