Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
296to300
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
296to300
296to300
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Select-Methode...

Select-Methode...
22.08.2003 09:55:38
Daniel G
Und wieder einmal lande ich auf der Seite meines Vertrauens...
Wie baue ich meine Schleife so um, dass das geht?
Hab schon fast alles versucht, ich komm aber auf keinen grünen Zweig!!
Ohne das vorhergehende Öffnen der Datei hab ich keine Probleme mit der Schleife.
Aber jetzt schlägt Select-Methode des Range Objekts fehl.
Bitte helft mir!!
Workbooks.Open FileName:="\\s...\h...\d...\q.\p...\g...\testmappeentw~2.xls"
Set wks1 = ActiveWorkbook.Sheets(1)
Do
tabelle1.range(Tabelle1.Cells(x, 1), Tabelle1.Cells(x, 17)).Select<=schlägt fehl

With Selection.Cells.Font
.Name = "Arial"
.Size = 8
.ColorIndex = 1
End With
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
End With
Bla
bla
Loop until ......
Thx Daniel

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select-Methode...
22.08.2003 10:32:43
Matthias G
Hallo Daniel,
um mit Hajo_Zi zu sprechen: Auf Select kann in VBA in 99% verzichtet werden.
Es muss heißen: Sheets("Tabelle1").Cells(x,1) ... usw.
also in etwa so:
Dim Bereich As Range
Do
Set Bereich = Range(Sheets("Tabelle1").Cells(x, 1), Sheets("Tabelle1").Cells(x, 17))
With Bereich.Cells.Font
.Name = "Arial"
.Size = 8
.ColorIndex = 1
End With
With Bereich
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
End With
bla
blubb
Loop Until ...
Viele Grüße,
Matthias G

AW: Select-Methode...
22.08.2003 11:38:39
Daniel G
Danke Matthias,
aber das geht leider auch nicht.
Range für Worksheet ist falsch, oder Anwendungs- und objektdefinierter Fehler.
Kann doch nicht so schwer sein, oder doch?
Komm mir langsam echt gehirnamputiert vor...
Hier der Code incl. deines Vorschlages:

Private Sub Spalten_und_Zeilen_Click()
Dim x As Long
Dim wks1 As Worksheet
Dim Bereich As Range
Workbooks.Open FileName:="\\...........\testmappeentw~2.xls"
Set wks1 = ActiveWorkbook.Sheets(1)
x = 1
Do
'Tabelle1 ist aktiv.
'Es werden den zu bearbeitenden Zellen
'Schriftgrösse, -art, -farbe, -ausrichtung zugewiesen
Set Bereich = Range(Sheets("Tabelle1").Cells(x, 1), Sheets("Tabelle1").Cells(x, 17))
With Bereich.Cells.Font
.Name = "Arial"
.Size = 8
.ColorIndex = 1
End With
With Bereich
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
End With
' Alle Zeilen werden im Durchlauf, in Abhängigkeit von x, in der Grösse optimiert
Worksheets("Tabelle1").Range("Ax:Qx").Rows.AutoFit
'Wiederholung...
x = x + 1
Loop Until Tabelle1.Cells(x, 1) = ""
End Sub

Gruss Daniel

Anzeige
AW: Select-Methode...
22.08.2003 11:51:17
Matthias G
Hallo Daniel,
wenn das Blatt "Tabelle1" sowieso aktiv ist, kannst du den Ausdruck "Sheets("Tabelle1")." komplett weglassen. Also nur Range(Cells(x,1),Cells(x,17)) usw.
Probier's mal damit!
Gruß,
Matthias
P.S.:
V.a. das Range-Objekt kann ja gar nicht nicht über verschiedene Blätter gehen, deshalb ist hier das Angeben des Blattes bei jeder Zelle sowieso Unsinn. Vielleicht akzeptiert ja Excel 97 diesen Ausdruck nicht, ich kann nur unter Excel XP testen.

AW: Select-Methode...
22.08.2003 12:02:48
Daniel G
THX!!!
Hat funktionier.
Jetzt macht er zwar gar nicht's mehr (ausser dem Öffnen der Datei), aber ich habe keinen Fehler mehr drin.
Dem Ziel ein Stück näher!!!!!1
1000Dank
Gruss Daniel

Anzeige
AW: Select-Methode...
22.08.2003 12:35:30
Matthias G
Hallo Daniel,
freut mich, dass kein Fehler mehr drin ist.
Aber jetzt geht gar nichts mehr??
Wenn du nocht Hilfe brauchst...
Matthias

AW: Select-Methode...
22.08.2003 13:12:43
Daniel G
Servus.
Ja, Hilfe könnt ich echt gebrauchen.
Ich versteh's einfach nicht.
Die Datei wird geöffnet, was wohl eigentlich der schwierigere Teil is, und nun läuft mir der Code durch, ohne ne Fehlermeldung zu bringen!!!
Und das einzige, das passiert, ist, dass sich die Datei öffnet!!!!!
Schließen und speichern kann ich sie auch wieder;))
Aber was bringt's mir, wenn dazwischen alles ignoriert wird!?!

Private Sub Spalten_und_Zeilen_Click()
Dim x As Long
Dim wks1 As Worksheet
Dim Bereich As Range
Workbooks.Open FileName:="\\......\testmappeentw~2.xls"
Set wks1 = ActiveWorkbook.Sheets(1)         <==Das geht noch.
x = 1
Do
'Tabelle1 ist aktiv.
'Es werden den zu bearbeitenden Zellen
'Schriftgrösse, -art, -farbe, -ausrichtung zugewiesen
Set Bereich = Range(Cells(x,1),Cells(x,17))
With Bereich.Cells.Font
.Name = "Arial"          <====Nix geht
.Size = 8
.ColorIndex = 1
End With
With Bereich
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom           <==Nix geht
End With
' Alle Zeilen werden im Durchlauf, in Abhängigkeit von x, in der Grösse ptimiert
Worksheets("Tabelle1").Range("Ax:Qx").Rows.AutoFit   <==Ganauso wenig geht
'Wiederholung...
x = x + 1
Loop Until Tabelle1.Cells(x, 1) = ""         <==Is auch nich erkennbar
End Sub

Gruss Daniel


Anzeige
AW: Select-Methode...
22.08.2003 13:31:50
Matthias G
Hallo Daniel,
arbeite mal mit MsgBox im Code.
z.B. MsgBox "Hallo, hier ist Mappe " + ActiveWorkbook.Name +", Blatt " + ActiveSheet.Name
damit kannst Du prüfen wo Du bist.
oder MsgBox Cells(x,1).Value
damit Du den Zellinhalt siehst
Dein Code:
Loop Until Tabelle1.Cells(x, 1) = "" <==Is auch nich erkennbar
stimmt so auch nicht, es muss heißen:
Loop Until Cells(x, 1) = ""
Und statt
Bereich.Cells.Font
schreib mal nur
Bereich.Font
Viel Glück!
Matthias

AW: Select-Methode...
22.08.2003 14:02:17
Daniel G
Coole Sache.
Nachdem ich die Änderungen vorgenommen habe, ging es ohne Probleme.
Und zwar genau !1! mal!!!!!
Jetzt passiert en alte Sch....
Laut MsgBox bin ich in meiner Datei(Testmappeentw~2.xls), in Tabelle1 und die Zelle hat keinen Wert.
Kann ich mir mit msgbox die Position der Zelle(n) angeben lassen?
Gruss Daniel

Anzeige
AW: Select-Methode...
22.08.2003 14:11:27
Matthias G
Hi Daniel,
Du kannst Variablenwerte anzeigen lassen mit (z.B.)
MsgBox CStr(x)
Dein Code ist so, dass die Schleife abbricht, sobald die erste Spalte leer ist. Auch wenn später noch gefüllte Zeilen kommen. Vielleicht liegt da das Problem? Evtl. ist eine Zeile ausgeblendet?
Matthias

AW: Select-Methode...
22.08.2003 14:19:38
Daniel G
Kann es sein, dass das Makro wegen Nullwerten abbricht?
Ich hab grad extra nach ausgeblendeden Zeilen geschaut, alle eingeblendet, war aber nix.
Mokro stopt mit dem Wert 2, Sprich in Zeile 2.
Die erste Zeilen enthält nur Bezeichnungen, die zweite in C2 die erste Null.
Die darauf Folgenden sind befüllt mit Strings oder Bytes und zwischen durch ma ne Null.
Also auch nicht's ungewöhnliches.
Daniel

Anzeige
AW: Select-Methode...
22.08.2003 14:22:54
Daniel G
Nicht mal A1 wird geändert!!!
Wir alles einfach links liegen gelassen!!

AW: Select-Methode...
22.08.2003 14:29:19
Matthias G
Hi Daniel,
Nochwas, jetzt seh ich's erst:
Worksheets("Tabelle1").Range("Ax:Qx").Rows.AutoFit
Was soll das? Das x im String wird nicht automatisch zum Inhalt der Variable x, das x bleibt x...
Besser wie oben im Code auch:
Bereich.Rows.Autofit
Und überhaupt:
Wozu die Do...Loop-Schleife?
Also nochmal:
'Finde erst heraus, welche die letzte nicht-leere Zeile ist:
lastrow=Cells.SpecialCells(xlCellTypeLastCell).row
'Dann setzte den Bereich:
Bereich = Range(Cells(1,1),Cells(lastrow,17)) 'ich hoffe das geht schon in Excel 97
'Dann Formatiere den Bereich:
With Bereich
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.Font.Name = "Arial"
.Font.Size = 8
.Font.ColorIndex = 1
.Rows.AutoFit
End With
Mal schaun, was jetzt dabei rauskommt!
Viele Grüße,
Matthias

Anzeige
so, jetzt aber...
22.08.2003 15:03:58
Matthias G
Hallo Daniel,
Ich glaube, ich habe die Lösung für dein Problem.
Dein Prozedurname ist Spalten_und_Zeilen_Click().
Das deutet darauf hin, dass der Code in einem Tabellenblatt steht und nicht in einem "normalen" Modul, und dass er durch Klick auf einen Button ausgelöst wird.
Code im Tabellenblatt ist aber scheinbar nicht ganz so leicht auf andere Blätter anzuwenden. Also schlage ich folgendes vor:
im Code des Tabellenblattes:

Private Sub Spalten_und_Zeilen_Click()
MeinMakro
End Sub

Dann, in einem allgemeinden Modul (z.B. Modul1):
Sub MeinMakro()
Workbooks.Open Filename:="[was da halt stehen soll].xls"
lastrow = Cells.SpecialCells(xlCellTypeLastCell).Row
With Range(Cells(1, 1), Cells(lastrow, 17))
.Font.Name = "Arial"
.Font.Size = 8
.Font.ColorIndex = 1
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.Rows.AutoFit
End With
End Sub

Dann müsste es eigentlich klappen.
Wäre schön, wenn du mich wissen lässt, ob das die Lösung war!
Matthias

Anzeige
HEUREKA!!!!!!!!!!!!
22.08.2003 15:30:21
Daniel G
Zillionen facher Dank!!!
Dieses Ding lebt!!!!!
Du bist genial!! (wenn ich hier mal etwas schleimen darf)
Jetzt geht es ohne auch nur die geringsten Zicken zu machen.
Ich würd dich gern knutschen, aber...nööö mal lieber nicht.
Ich wünsch dir auf jeden Fall ein WUNDERSCHÖNES Wochenende.
Und hoffentlich hab ich nächstes mal nicht ganz so arg den Wurm drin.
1000Grüsse Daniel

AW: HEUREKA!!!!!!!!!!!!
22.08.2003 15:36:09
Matthias G
Hi Daniel,
Freut mich dass ich Dir helfen konnte.
Jetzt muss ich mich dringend um die Kinder kümmern, die schlagen sich grade die Schädel ein...
Schönen Wochenende, dir auch!
Matthias

Anzeige
AW: Select-Methode...
22.08.2003 15:04:01
Daniel G
Ok.
Die Schleife ist im Moment noch überflüssig.
Ich hatte ürsprünglich ca. 4 Seiten Code und hab alles in einzelne Makros gesetzt, um wenigstens etwas zum laufen zu bringen.
Ich brauch Sie wieder, da ich 16 Dateien aus einer aktualisieren muss...
Aber kommt erst noch.
Also, ich hab's nu versucht und es ging nicht ganz. Hab's aber umgebaut.
Nun krieg ich in der letzten Zeile nur den Wert 11 als Ausgabe.
Bedeutet das vielleicht dass ich in der letzten Zeile 11 befüllte und 5 nicht befüllte Zellen habe?? Siehe CStr-Helpfile(Empty). Da gibt's dann Mecker, oder nicht?
Würde nämlich mit dem Wert 2 von vorhin auch passen...
habe auf jeden Fall 30 Zeilen, die in Spalte A alle befüllt sind.

Private Sub Spalten_und_Zeilen_Click()
Dim x As Long
Dim wks1 As Worksheet
Dim Bereich As Range
Dim lastcell As Range
Workbooks.Open FileName:="\\..\testmappeentw~2.xls"
Set wks1 = ActiveWorkbook.Sheets(1)
Set lastcell = Cells.SpecialCells(xlCellTypeLastCell)  <== ging nicht anderst
Set Bereich = Range(Cells(1, 1), Cells(xlCellTypeLastCell, 17)) <==auch nicht anderst
With Bereich
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.Font.Name = "arial"
.Font.Size = 8
.Font.ColorIndex = 1
.Rows.AutoFit
End With
MsgBox "Hallo, hier ist Mappe " + ActiveWorkbook.Name + ", Blatt " + ActiveSheet.Name
MsgBox Cells(xlCellTypeLastCell, 1).Value
MsgBox CStr(xlCellTypeLastCell)
ActiveWorkbook.SaveAs
End Sub


Anzeige
Schön wär's
22.08.2003 15:17:02
Daniel G
Hab doch 17 Spalten.
Also vergiss meine Theorie über 0 und befüllte Zellen...
Bin halt am Verzweifeln, da sich nicht's tut, ausser öffnen, speichern und die MsgBox!!

AW: Schön wär's
22.08.2003 15:28:26
Matthias G
Hi Daniel,
du musst den Code in ein "normales" Modul auslagern. Innerhalb des Tabellenblatt-Codes kannst du nicht auf andere Bereiche zugreifen.
Siehe mein Posting hier: http://xlforum.herber.de/messages/298773.html
Matthias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige