Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1140to1144
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Grafik an rechter kante einer Spalte ausrichten?

Grafik an rechter kante einer Spalte ausrichten?
Kasimir
Hallo Leute,
ich muss Euch wieder mal um Hilfe bitten. Ich möchte eine Grafik an bestimmten Spalten ausrichten. Bei den Spalten handelt es sich immer um die letzte beschriebene Spalte. Das ermitteln der letzten Spalte ist nicht das Problem, sondern ich möchte dass die Grafik immer am rechten Rand einer Spalte ausgerichtet wird. Also der rechte Rand eines Bildes soll am rechten Rand z.B. der Spalte F ausgerichtet werden. Zur Verdeutlichung mal ein Bildbeispiel:
Userbild
Jemand eine Idee, wie ich das via VBA realisieren kann.
Danke Euch und Gruß,
Kasimir

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Grafik an rechter kante einer Spalte ausrichten?
06.03.2010 17:32:14
Josef

Hallo Kasimir,
das geht z.B. so.


Sub movePicture()
  Dim objShp As Shape
  Dim lngColumn As Long
  
  lngColumn = 6 'Spalte F
  
  Set objShp = ActiveSheet.Shapes("Bild 1")
  
  With objShp
    .Left = Columns(lngColumn).Left + Columns(lngColumn).Width - .Width
  End With
  
  Set objShp = Nothing
  
End Sub

Gruß Sepp

Anzeige
AW: Grafik an rechter kante einer Spalte ausrichten?
06.03.2010 17:38:56
Nepumuk
Servus Sepp,
was hat denn die Spaltenbreite damit zu tun?
With ActiveSheet.Shapes("Bild 1")
.Left = Columns(lngColumn).Left + .Width
End With
Gruß
Nepumuk
AW: Grafik an rechter kante einer Spalte ausrichten?
06.03.2010 17:40:57
Nepumuk
Hi,
ich sehs ein, war Quatsch. :-)
Gruß
Nepumuk
@Max, RECHTE Kante! o.T.
06.03.2010 17:42:14
Josef
Gruß Sepp

AW: @Max, RECHTE Kante! o.T.
06.03.2010 18:17:31
Kasimir
Hallo Ihr beiden,
danke Euch für die Antworten. Hmm. so ganz funktioniert mein VBA-Code nun noch nicht. Nachfolgend mal mein Code, der mir ein Bild in die letzte Spalte einfügt und eigentlich auf eine bestimmte Größe bringen soll:
With wkbNewWorkbook.Sheets(1)
strSpalte = _
Application.Substitute(Cells(1, intLastColumn + 2).Address(0, 0), 1, "")
'nicht genutzte Zeilen und Spalten ausblenden
.Columns(intLastColumn + 1).ColumnWidth = 0.1
.Columns(strSpalte & ":XFD").EntireColumn.Hidden = True
.Rows(.Cells(Rows.Count, 3).End(xlUp).Row + 1 & ":1048576").EntireRow.Hidden = True
'Logo einfügen
Set objLogo = ActiveSheet.Pictures.Insert(ThisWorkbook.path & "\GFA Public - 1045 Pixel.jpg")
objLogo.Name = "Logo" '
strLogoName = objLogo.Name
.Shapes(strLogoName).Placement = xlFreeFloating
.Shapes(strLogoName).LockAspectRatio = 0
.Shapes("Logo").Left = .Columns(intLastColumn).Left + .Columns(intLastColumn).Width - .Shapes("Logo").Width
.Shapes(strLogoName).Top = .Cells(1, intLastColumn - 3).Top
.Shapes(strLogoName).Width = 150
.Shapes(strLogoName).Height = 75
'Überschrift eintragen
.Range(Cells(1, 1), Cells(11, intLastColumn)).MergeCells = True
.Cells(1, 1) = "Auslastungsplanung GFA Public"
.Cells(1, 1).Font.Name = "Arial"
.Cells(1, 1).Font.Size = 11
.Cells(1, 1).HorizontalAlignment = xlCenter
.Cells(1, 1).VerticalAlignment = xlCenter
.Cells(1, 1).Font.Bold = True
.PageSetup.PrintTitleRows = "$1:$12"
.PageSetup.CenterFooter = "&""Arial,Standard""&8&P/&N"
.PageSetup.RightFooter = "&""Arial,Standard""&8Projektauswertung vom: &D"
.PageSetup.LeftMargin = Application.InchesToPoints(0.393700787401575)
.PageSetup.RightMargin = Application.InchesToPoints(0.393700787401575)
.PageSetup.TopMargin = Application.InchesToPoints(0.15748031496063)
.PageSetup.BottomMargin = Application.InchesToPoints(0.31496062992126)
.PageSetup.HeaderMargin = Application.InchesToPoints(0)
.PageSetup.FooterMargin = Application.InchesToPoints(0.118110236220472)
.PageSetup.CenterHorizontally = True
.PageSetup.CenterVertically = False
.PageSetup.Orientation = xlLandscape
End With

Nach der Änderung mit dem Ausrichten an der rechten Kante, wird nun aber das Bild von der Größe her verkleinert. Woran kann dass denn liegen?
MfG,
Kasimir
Anzeige
AW: @Max, RECHTE Kante! o.T.
06.03.2010 18:36:32
Josef

Hallo Kasimir,
der Code wird nicht unbedingt lesbarer, nur weil du in fett darstellst!
Wenn du chon eine Objektvariable erstellst, dann solltest du sie auch verwenden.
Die Größe änderst du ja im Code, du solltest zuerst die Größe einstellen, dann die Position.
Den rest vom Code hab ich jetzt nicht beachtet, obwohl mir da auch manches ein wenig "schräg" erscheint.

'Logo einfügen
Set objLogo = .Pictures.Insert(ThisWorkbook.Path & "\GFA Public - 1045 Pixel.jpg")

objLogo.Name = "Logo" '
objLogo.Placement = xlFreeFloating
objLogo.LockAspectRatio = 0
objLogo.Width = 150
objLogo.Height = 75
objLogo.Left = .Columns(intLastColumn).Left + .Columns(intLastColumn).Width - objLogo.Width
objLogo.Top = Cells(1, intLastColumn - 3).Top

Gruß Sepp

Anzeige
AW: @Max, RECHTE Kante! o.T.
06.03.2010 19:02:10
fcs
Hallo Kasimir,
ergänzend zu Sepp's Anmerkung.
Du solltest die als String "zusammengebastelten" Zelladdressen für Rows und Columns vermeiden. Verwende statt dessen Range in Verbindung mit Rows und Columns und nummerischen Angaben bzw. Systemvariablen-/Methoden für die Festlegung der Zeilen und Spalten.
So
a) wird es übersichtlicher,
b) funktioniert die Prozedur auch unter den älteren Excelversionen,
c) sind VBA -Prozeduren einfacher zu handhaben/pflegen
d) läuft der Code etwas schneller was in deinem Fall aber kaum relevant ist.
Gruß
Franz
With wkbNewWorkbook.Sheets(1)
'nicht genutzte Zeilen und Spalten ausblenden
.Columns(intLastColumn + 1).ColumnWidth = 0.1
.Range(.Columns(intLastColumn + 2), _
.Columns(.Columns.Count)).EntireColumn.Hidden = True
.Range(.Rows(.Cells(.Rows.Count, 3).End(xlUp).Row + 1), _
.Rows(.Rows.Count)).EntireRow.Hidden = True
'Logo einfügen
Set objLogo = ActiveSheet.Pictures.Insert(ThisWorkbook.Path _
& "\GFA Public - 1045 Pixel.jpg")
objLogo.Name = "Logo" '
strLogoName = objLogo.Name
.Shapes(strLogoName).Placement = xlFreeFloating
.Shapes(strLogoName).LockAspectRatio = 0
.Shapes(strLogoName).Top = .Cells(1, intLastColumn - 3).Top
.Shapes(strLogoName).Width = 150
.Shapes(strLogoName).Height = 75
.Shapes("Logo").Left = .Columns(intLastColumn).Left + .Columns(intLastColumn).Width - _
.Shapes("Logo").Width
'Überschrift eintragen

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige