Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Greg am 27.10.05 - 15:14:41
-
Hallo,
ich habe folgendes problem!
ich möchte nach meinem Export nach Exel eine Ausgewählte Spalte ,in der nach dem Export nichts reingeschrieben wurde löschen und die nachfolgende Spalte um eine nach links verschieben.
Das Problem ob in der Spalte was steht oder nicht habe ich gelöst:
Nur das löschen funktioniert nicht , ich hab es mit folgendem Code versucht:
vc = view.EntryCount
dim flag as Boolean
-----------------------------
dann folgt nen weitere code und dann kommt das problem?!
If flag = True And zaehler = vc Then
xlSheet.Columns("S:S").Select
xlSheet.Selection.Delete
End If
Es kommt die Fehlermeldung: Instance member SELECTION does not exsist???
Die Frage ist WARUM;)
kann mir jemand weiterhelfen?!danke
-
selection ist ein Property/Subklasse von ExcelApplication.
-
d.h?
wie bekomm ich das problem gelöst!
-
Du hast ja irgendwo ein xlApplication Objekt.
Von dem aus kommst Du dann an die Selection:
xlApplication.Selection. ...
-
das tut leider nicht!
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Add
Set xlSheet = objExcel.Workbooks(1).Worksheets(1)
-
Deinem Code folgende müsste es dann
objExcel.Selection heissen.
Wie gesagt: Selection ist kein Objekt vom Sheet, sondern des Gesamtprogramms Excel - sonst könntest Du ja auf jedem Sheet eine eigene Selektion haben.
-
oh ok jetzt hab ich es kapiert danke!
-
objExcel.Selection...
wird ein Fehler angezeigt! könnte mir jemand vielleicht ne Beispiel Code geben?!
-
Wie du an xlApp kommst weisst Du ja schon - entspricht Deinem objExcel.
xlApp.Rows("1:1").Select
With xlApp.Selection.Interior
.ColorIndex = 15'Grey
End With
-
Welche Zahl entspricht den keiner Farbe????
und wie bekomm ich ne Spalte gelöscht und dann die nachfolgende spalte um eins nach links verschoben`?!?!
-
Keine Ahnung.
Mein Vorgehen ist wie folgt:
Ich zeichne ein Macro auf, dass genau das tut, was ich will. In Deinem Fall also würde ich ein Macro aufzeichnen, in dem eine Spalte gelöscht wird.
Dann schaue ich mir das Macro im VBA-Editor an. Den öffnest Du aus Excel über die Optionen Macro editieren.
Dort steht dann schon mal das Grundgerüst - allerdings mit den VBA Konstanten (z.B. Farbe).
Die kannst Du in Integer umwandeln, in dem Du sie im Object Browser (innerhalb des VBA-Editors) nachschlägst.
Den Code kannst Du mehr oder weniger 1:1 übernehmen - Fallstrick ist alleine die Tatsache, dass Du vor Dinge wie Selection noch ein objExcel. schreiben musst.
-
Das mit dem makro aufzeichn hab ich ganz zu anfang gemacht hat leider nicht getan ! Deswegen habe ich dieses Problem auch!
-
'xlApp ... Excel-Objekt
z.B. Spalte B löschen
xlApp.Columns("B:B").Select
xlApp.Selection.Delete -4159
z.B. Zelle C2 auf keine Hintergrundfarbe setzen
xlApp.Range("C2").Select
xlApp.Selection.Interior.ColorIndex = -4142
-
Halli hallo hallöchen,
um eine Spalte zu löschen musst du diese nicht umbedingt selectieren.
Delete ist eine Funktion eines Range-Objektes.
Zum Beispiel:
1. Excel starten
2. Arbeitsmappe erstellen
3. Dritte Spalte aus erster Tabelle entfernen
Dim app As Variant ' excel application object
Dim books As Variant ' workbooks list object
Dim book As Variant ' workbook object
Dim sheets As Variant ' worksheets list object
Dim sheet As Variant ' worksheet object
Dim range as Variant ' range object
Const xlToLeft = -4159
' run excel
Set app = CreateObject("Excel.Application")
app.Visible = True
' add a new woorkbook
Set books = app.Workbooks
Set book = books.Add()
' get the first worksheet
Set sheets = book.Worksheets
Set sheet = sheets(1)
' get the first column and delete column
Set range = sheet.Column(3)
Call range.Delete(xlToLeft)
Ich für meinen Teil vermeide es, Zellenbereiche (Range-Objekte) mit Buchstaben zu adressieren.
Mit Zählern braucht man sich um eine korrekte Adressierung mittels eines Strings nicht zu kümmern.
1. Einen bestimmten Bereich ("A3:C5") als Range-Object (range)
Set range = sheet.Range(sheet.Cells(3,1),sheet.Cells(5,3))
2. Eine Spalte ("S:S") als Range-Objekt (column)
Dim column as Variant
Set column = sheet.Columns(19)
Was deine die Farbcodes betrifft:
Die Eigenschaft ColorIndes des Interior-Objektes (das du von einem Range-Objekt bekommst) holt sich die Farbe aus einem vordefinierten Satz an Farben (s. Menü "Extras\Optionen" Register "Farbe").
Die dort definierten Farben kannst du natürlich ebenfalls manipulieren.
' RGB ist eine Funktion die mir einen entsprechenden Long vert zurück gibt
book.Colors(55) = RGB(206,229,223)
book.Colors(56) = RGB(225,225,225)
' Farbe verwenden
Dim myinterior as Variant
Set myinterior = range.Interior
myinterior.ColorIndex = 55
' keine Farbe verwenden
Const xlNone = -4142
Set myinterior = range.Interior
myinterior.ColorIndex = xlNone
Die Namen der Variablen richten sich nach dem Code oben.
-
OK dankeschön an alle für die Hilfe !!!!