Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1060to1064
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

Spalten mit VBA markieren

Spalten mit VBA markieren
24.03.2009 13:19:13
Udo
Hallo
Ich habe hier ein Stück VBA-Code, mit dem ich mehrere zusammenhängende Spalten (U1-AA) einer Excel-Tabelle markiere, wenn ich Spalte B kein Wert ist.
Ander ausgedrückt: die zusammenhängenden Spalten(U1-AA) werden von oben nach unten so weit markiert, bis eine zeile kommt, welche in Spalte B keinen Wert hat:
Dim Zeile1 As Integer
Dim Zelle As Range
Dim Bereich As String
Zeile1 = 1
Do Until Range("B" & Zeile1).Value = ""
Zeile1 = Zeile1 + 1
Loop
Range("U1:AA" & Zeile1 - 1).Select
Nun möchte ich aber gerne noch eine Spalte dazu markieren, welche nicht direkt neben den anderen Spalten(U1-AA) ist und zwar die Spalte BX.
Ich habe es so versucht:
Dim Zeile1 As Integer
Dim Zelle As Range
Dim Bereich As String
Zeile1 = 1
Do Until Range("B" & Zeile1).Value = ""
Zeile1 = Zeile1 + 1
Loop
Range("U1:AA,BX:BX" & Zeile1 - 1).Select
Aber das will leider nicht funktionieren.
Was mache ich denn da falsch?

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten mit VBA markieren
24.03.2009 13:27:27
Armin
Hallo Udo,
.........Was mache ich denn da falsch?............
einfach alles. Wozu denn das Select? Wenn wir diese Frage geklärt haben können wir weiter sehen.
Gruß Armin
AW: Spalten mit VBA markieren
24.03.2009 14:02:56
Ingo
hallo zusammen,
Einfach alles ist schon etwas übertrieben,gell.
Range("U1:AA" & Zeile1 - 1 & ",BX1:BX" & Zeile1 - 1).Select
sollte gehen
mfG
Ingo Christiansen
AW: Spalten mit VBA markieren
24.03.2009 14:04:24
Udo
Hallo Armin
Ups :-)
OK, ich habe diesen Code nicht selber geschrieben, weil ich dazu VBA leider viel zu wenig kann.
Er ist vor sehr langer zeit mal mit Hilfe hier im Forum enstanden.
Ich poste hier nun mal den ganzen Code damit evtl. ersichtlich wird, wozu das Select gut ist.
Das ist zwar letztendlich auch wieder nur ein Auschnitt.
Aber es ist eben der teil, der die gewünschte Aufgabe erfüllt.
Ich hoffe das reicht. Ansonsten wirds evtl. zu unübersichtlich, wen ich alles poste.

Sub Google()
'--> Erstellt Liste für Google base
'Dieser Teil markiert den Spaltenbereich U:AA
'wenn in Zelle B ein Wert ist.
Dim Zeile1 As Integer
Dim Zelle As Range
Dim Bereich As String
Zeile1 = 1
Do Until Range("B" & Zeile1).Value = ""
Zeile1 = Zeile1 + 1
Loop
Range("U1:AA" & Zeile1 - 1).Select
'Dieser Teil schreibt aus dem markierten Bereich
'eine txt-Datei mit Tabulator-Trennzeichen.
Application.DisplayAlerts = False
Dim Zeile As Object
Dim s As String
Open "D:\SPACEart\Internet\SPACEart\google-base-datei.txt" For Output As #1
For Each Zeile In Selection.Rows
If (Cells(Zeile.Row, 2).Interior.ColorIndex  37) Then
For Each Zelle In Zeile.Cells
s = s & Zelle.Text & vbTab
Next
Print #1, Left(s, Len(s) - 1)
s = ""
End If
Next
Close #1
Application.DisplayAlerts = True
ActiveWindow.SmallScroll ToRight:=-30
Range("A1").Select
End Sub


Anzeige
AW: Spalten mit VBA markieren
24.03.2009 14:44:21
Armin
Hallo Udo,
versuch es mal so:

Sub Google()
'--> Erstellt Liste für Google base
'Dieser Teil markiert den Spaltenbereich U:AA
'wenn in Zelle B ein Wert ist.
Dim Zelle As Range
Dim Rx As Long
Dim Bereich As String
'Dieser Teil schreibt aus dem markierten Bereich
'eine txt-Datei mit Tabulator-Trennzeichen.
Application.DisplayAlerts = False
Dim Zeile As Range
Dim s As String
'den Namen des Worksheet bitte anpassen!
Rx = Worksheets("Txxxxxxx").Range("A65536").End(xlUp).Row
Open "D:\SPACEart\Internet\SPACEart\google-base-datei.txt" For Output As #1
For Each Zeile In Range("U1:AA" & CStr(Rx))
If Zeile.Offset(-20, 0).Value = "" Then
If (Cells(Zeile.Row, 2).Interior.ColorIndex  37) Then
For Each Zelle In Zeile.Cells
s = s & Zelle.Text & vbTab
Next
Print #1, Left(s, Len(s) - 1)
s = ""
End If
Else
Exit For
End If
Next
Close #1
Application.DisplayAlerts = True
ActiveWindow.SmallScroll ToRight:=-30
Range("A1").Select
End Sub


Gruß Armin

Anzeige
AW: Spalten mit VBA markieren
24.03.2009 18:41:51
Udo
Hallo Armin
Da bekomme ich leider noch eine Fehlermeldung:
"Laufzeitfehler 1004"
Und wenn ich dann auf Deguggen klicke, wird diese Zeile hier gelb markiert:
If Zeile.Offset(-20, 0).Value = "" Then
AW: Spalten mit VBA markieren
25.03.2009 09:49:02
Armin
Hallo Udo,
ja wenn man so nebenbei solche Dinge erledigt passieren eben solche sachen.
Versuch es bitte noch mal mit dieser Änderung.

Sub Google()
'--> Erstellt Liste für Google base
'Dieser Teil markiert den Spaltenbereich U:AA
'wenn in Zelle B ein Wert ist.
Dim Zelle As Range
Dim Rx As Long
Dim Bereich As String
Dim AWS As Range
Dim Zeile As Range
Dim s As String
'Dieser Teil schreibt aus dem markierten Bereich
'eine txt-Datei mit Tabulator-Trennzeichen.
Application.DisplayAlerts = False
'den Namen des Worksheet bitte anpassen!
AWS = ThisWorkbook.Worksheets("Txxxxxxx")
Rx = AWS.Range("A65536").End(xlUp).Row
Open "D:\SPACEart\Internet\SPACEart\google-base-datei.txt" For Output As #1
For Each Zeile In Range("U1:AA" & CStr(Rx))
If AWS.Cells(Zeile.Row, 1).Value = "" Then
If (Cells(Zeile.Row, 2).Interior.ColorIndex  37) Then
For Each Zelle In Zeile.Cells
s = s & Zelle.Text & vbTab
Next
Print #1, Left(s, Len(s) - 1)
s = ""
End If
Else
Exit For
End If
Next
Close #1
Set AWS = Nothing
Application.DisplayAlerts = True
ActiveWindow.SmallScroll ToRight:=-30
Range("A1").Select
End Sub


Gruß Armin

Anzeige
AW: Spalten mit VBA markieren
25.03.2009 14:08:50
Udo
Hallo Armin
Der Namen des Worksheet ist doch der Name des Tabellenblatts meiner Excel-datei, oder?
Das Tabellenblatt heist bei mir "Angebot".
Also hbe ich in Deinem Code das "Txxxxxxx" durch "Angebot" ersetzt.
Wenn ich das dann suführe kommt aber folgende Fehlermeldung:
Laufzeitfehler '91'
Objektvariable oder With-Blockvariable nicht festgelegt.
Und die folgende zeile wird gelb markiert beim Debuggen:
AWS = ThisWorkbook.Worksheets("Angebot")
AW: Spalten mit VBA markieren
25.03.2009 14:23:48
Armin
Hallo Udo,
da feht leider noch ein "Set" davor also :
Set AWS = ThisWorkbook.Worksheets("Angebot")
sorry habe es wahrscheinlich beim kopieren verloren.
Gruß Armin
Anzeige
AW: Spalten mit VBA markieren
25.03.2009 15:20:17
Udo
Hallo Armin
OK, ich habe nun das "Set" davor gesetzt.
Nun erhalte ich folgende Fehlermeldung:
Laufzeitfehler '13'
Typen unverträglich
Und die folgende zeile wird beim Debuggen gelb markiert:
Set AWS = ThisWorkbook.Worksheets("Angebot")
AW: Spalten mit VBA markieren
25.03.2009 15:41:10
Armin
Hallo Udo,
ich heute wohl auf zu vielen "Hochzeiten" unterwegs.
Bitte tausche den Code aus:

Sub Google()
'--> Erstellt Liste für Google base
'Dieser Teil markiert den Spaltenbereich U:AA
'wenn in Zelle B ein Wert ist.
Dim Zelle As Range
Dim Rx As Long
Dim Bereich As String
Dim AWS As Worksheet
Dim Zeile As Range
Dim s As String
'Dieser Teil schreibt aus dem markierten Bereich
'eine txt-Datei mit Tabulator-Trennzeichen.
Application.DisplayAlerts = False
'den Namen des Worksheet bitte anpassen!
Set AWS = Worksheets("Angebot")
Rx = AWS.Range("A65536").End(xlUp).Row
Open "D:\SPACEart\Internet\SPACEart\google-base-datei.txt" For Output As #1
For Each Zeile In Range("U1:AA" & CStr(Rx))
If AWS.Cells(Zeile.Row, 1).Value = "" Then
If (Cells(Zeile.Row, 2).Interior.ColorIndex  37) Then
For Each Zelle In Zeile.Cells
s = s & Zelle.Text & vbTab
Next
Print #1, Left(s, Len(s) - 1)
s = ""
End If
Else
Exit For
End If
Next
Close #1
Set AWS = Nothing
Application.DisplayAlerts = True
ActiveWindow.SmallScroll ToRight:=-30
Range("A1").Select
End Sub


Gruß Armin

Anzeige
AW: Spalten mit VBA markieren
25.03.2009 16:15:17
Udo
Hallo Armin
Nun bekomme ich keine fehlermeldung mehr.
Aber die datei google-base-datei.txt enthält nun nur die Namen der Spaltenköpfe:
id
link
titel
beschreibung
bild_url
preis
währung
AW: Spalten mit VBA markieren
25.03.2009 17:12:43
Armin
Hallo Udo, ja das liegt daran das wir uns jetzt auf ein bestimmte Tabelle beziehen.
Und nicht konsequent genug waren.
Also probier mal so:

Sub Google()
'--> Erstellt Liste für Google base
'Dieser Teil markiert den Spaltenbereich U:AA
'wenn in Zelle B ein Wert ist.
Dim Zelle As Range
Dim Rx As Long
Dim Bereich As String
Dim AWS As Worksheet
Dim Zeile As Range
Dim s As String
'Dieser Teil schreibt aus dem markierten Bereich
'eine txt-Datei mit Tabulator-Trennzeichen.
Application.DisplayAlerts = False
'den Namen des Worksheet bitte anpassen!
Set AWS = Worksheets("Angebot")
Rx = AWS.Range("A65536").End(xlUp).Row
Open "D:\SPACEart\Internet\SPACEart\google-base-datei.txt" For Output As #1
For Each Zeile In AWS.Range("U1:AA" & CStr(Rx))
If AWS.Cells(Zeile.Row, 1).Value = "" Then
If (AWS.Cells(Zeile.Row, 2).Interior.ColorIndex  37) Then
For Each Zelle In Zeile.Cells
s = s & Zelle.Text & vbTab
Next
Print #1, Left(s, Len(s) - 1)
s = ""
End If
Else
Exit For
End If
Next
Close #1
Set AWS = Nothing
Application.DisplayAlerts = True
ActiveWindow.SmallScroll ToRight:=-30
Range("A1").Select
End Sub


Übrigens das Problem liegt in einer nicht vorhanden Testdatei! Ich habe weder Zeit noch Lust für jede Frage ein Mustersheet zu erstellen. Deshalb so oft "ein Beispiel hoch laden".
Gruß Armin

Anzeige
AW: Spalten mit VBA markieren
25.03.2009 18:41:17
Armin
Hallo Udo,
genau wie ich gesagt habe Du kannst nicht wissen worauf es ankommt und ich bin der Unwissende.
Jetzt geht es hoffe ich:

Sub Google()
'--> Erstellt Liste für Google base
'Dieser Teil markiert den Spaltenbereich U:AA
'wenn in Zelle B ein Wert ist.
Dim Zelle As Range
Dim Rx As Long
Dim Bereich As String
Dim AWS As Worksheet
Dim Zeile As Range
Dim s As String
'Dieser Teil schreibt aus dem markierten Bereich
'eine txt-Datei mit Tabulator-Trennzeichen.
Application.DisplayAlerts = False
'den Namen des Worksheet bitte anpassen!
Set AWS = Worksheets("Angebot")
Rx = AWS.Range("B65536").End(xlUp).Row
Open "D:\Temp\test.txt" For Output As #1
For Each Zeile In AWS.Range("U1:AA" & CStr(Rx))
If AWS.Cells(Zeile.Row, 1).Value = "" Then
If (AWS.Cells(Zeile.Row, 2).Interior.ColorIndex  37) Then
For Each Zelle In Zeile.Cells
s = s & Zelle.Text & vbTab
Next
Print #1, Left(s, Len(s) - 1)
s = ""
End If
Else
Exit For
End If
Next
Close #1
Set AWS = Nothing
Application.DisplayAlerts = True
ActiveWindow.SmallScroll ToRight:=-30
Range("A1").Select
End Sub


Gruß Armin
Einen schönen Abend trotz des Stresses

Anzeige
AW: Spalten mit VBA markieren
26.03.2009 07:24:02
Udo
Hallo und guten Morgen :-)
Ja, das funktioniert nun schon wesentlich besser.
Nur leider werden in der Textdatei die Zelleninahlte nun mit zeilenumbrüchen alle untereinender ausgegeben.
Diese sollten aber mit TAB-Trennung ausgegeben werden.
Und dann ist da ja auch noch mein eigentliches Anliegen aus meinem ursprünglichen Postig.
Nun möchte ich aber gerne noch eine Spalte dazu markieren, welche nicht direkt neben den anderen Spalten(U1-AA) ist und zwar die Spalte BX.
Ich habe es so versucht:
For Each Zeile In AWS.Range("U1:AA,BX1:BX" & CStr(Rx)
Aber das funktioniert leider nicht.
Anzeige
AW: Spalten mit VBA markieren
26.03.2009 09:58:54
Armin
Hallo Udo,
ich hoffe ja das wir das noch hinbekommen.
Also nächster Versuch:

Sub Google()
'--> Erstellt Liste für Google base
'wenn in Zelle B ein Wert ist.
Dim Zelle As Range
Dim Rx As Long
Dim Bereich As String
Dim AWS As Worksheet
Dim Zeile As Range
Dim s As String
'Dieser Teil schreibt aus dem markierten Bereich
'eine txt-Datei mit Tabulator-Trennzeichen.
Application.DisplayAlerts = False
'den Namen des Worksheet bitte anpassen!
Set AWS = Worksheets("Angebot")
Rx = AWS.Range("B65536").End(xlUp).Row
Open "D:\Temp\test.txt" For Output As #1
For Each Zeile In AWS.Range("U1:U" & CStr(Rx))
If AWS.Cells(Zeile.Row, 1).Value = "" Then
If (AWS.Cells(Zeile.Row, 2).Interior.ColorIndex  37) Then
For Each Zelle In Zeile.Resize(1, 7)
s = s & Zelle.Text & vbTab
Next
s = s & WS.Cells(Zeile.Row, 76).Value
Print #1, s
s = ""
End If
Else
Exit For
End If
Next
Close #1
Set AWS = Nothing
Application.DisplayAlerts = True
ActiveWindow.SmallScroll ToRight:=-30
Range("A1").Select
End Sub


Gruß Armin

Anzeige
AW: Spalten mit VBA markieren
26.03.2009 10:45:48
Udo
Hallo Armin
Ohhhh suuuper. Habs grad mal schnell getestet. Nun scheint alles wie gewünscht zu funktionieren.
Aber eine Frage zum Verständnis ...
In der Zeile
For Each Zeile In AWS.Range("U1:U" & CStr(Rx))
steht ja nun "nur" noch "U1:U".
Vorher stand da ja mel "U1:AA".
Woher weis das Script denn nun, dann von U1 bis AA und noch zusätzlich BX markiert werden sollen?
Hellsehen kann das Script doch nun sicher nicht :-))
Ich hoffe, dass die Frage nicht nervt, aber ich versuche halt auch etwas, das Script zu verstehen.
AW: Spalten mit VBA markieren
26.03.2009 12:05:01
Armin
Hallo Udo,
ich habe mal die Zeilen kommentiert, wenn drotzdem noch Fragen sind lass es mich wissen.
Übrigens ist mir beim kommentieren aufgefallen es müsste in der einen Zeile anstatt 1 gleich 2 stehen.

Sub Google()
'--> Erstellt Liste für Google base
'wenn in Zelle B ein Wert ist.
Dim Zelle As Range
Dim Rx As Long
Dim Bereich As String
Dim AWS As Worksheet
Dim Zeile As Range
Dim s As String
'Dieser Teil schreibt aus dem markierten Bereich
'eine txt-Datei mit Tabulator-Trennzeichen.
Application.DisplayAlerts = False
'den Namen des Worksheet bitte anpassen!
Set AWS = Worksheets("Angebot")
Rx = AWS.Range("B65536").End(xlUp).Row 'Wieviel Zeilen sind belegt?
Open "D:\Temp\test.txt" For Output As #1
For Each Zeile In AWS.Range("U1:U" & CStr(Rx)) 'Zeile U1....Un (Umax=RX)
If AWS.Cells(Zeile.Row, 2).Value = "" Then 'Ist in Spalte B zeile =1...Rx leer hier tand  _
vorher eine 1 und das wäre Spalte A gewesen.
If (AWS.Cells(Zeile.Row, 2).Interior.ColorIndex  37) Then 'hat die Zelle nicht die  _
Farbe 37 (hellblau)
For Each Zelle In Zeile.Resize(1, 7) 'Durchlaufe von Zelle Un..AAn
s = s & Zelle.Text & vbTab 'Wert der Zelle übernehmen
Next
s = s & WS.Cells(Zeile.Row, 76).Value 'Wert der Zelle BXn übernehmen
Print #1, s
s = ""
End If
Else
Exit For
End If
Next
Close #1
Set AWS = Nothing
Application.DisplayAlerts = True
ActiveWindow.SmallScroll ToRight:=-30
Range("A1").Select
End Sub


Gruß Armin

AW: Spalten mit VBA markieren
26.03.2009 12:37:03
Udo
Hi
In der Zeile
If AWS.Cells(Zeile.Row, 2).Value = "" Then
muss es doch statt "0" sicher eher "" heißen, oder?
In der Zeile
s = s & WS.Cells(Zeile.Row, 76).Value
muss es sicher "AWS" statt "WS" heisen, richtig?
AW: Spalten mit VBA markieren
26.03.2009 13:11:54
Armin
Hallo Udo,
also hat sich schon wieder etwas eingeschlichen.
In der Zeile
If AWS.Cells(Zeile.Row, 2).Value = "" Then
muss es doch statt "0" sicher eher "" heißen, oder?
NEIN Du willst ja alle bis zur ersten leeren Zelle der Spalte B
In der Zeile
s = s & WS.Cells(Zeile.Row, 76).Value
muss es sicher "AWS" statt "WS" heisen, richtig? JA da ist etwas verloren gegangen
Sorry
Gruß Armin
AW: Spalten mit VBA markieren
26.03.2009 13:55:44
Udo
Hallo
Hmmmmmm.
Wenn ich
If AWS.Cells(Zeile.Row, 2).Value = "" Then
schreibe, bleibt die text-Datei leer.
Wenn ich aber
If AWS.Cells(Zeile.Row, 2).Value "" Then
schreibe, klappt es.
Kann das denn sein?
AW: Spalten mit VBA markieren
26.03.2009 14:23:02
Armin
Hallo Udo,
hast ja recht.
Gruß Armin
AW: Spalten mit VBA markieren
26.03.2009 15:39:20
Udo
Hallo Armin
OK, prima :-)
Dann möchte ich Dir nun sehr sehr dolle für Deine tolle Hilfe danken.
Das hat mir wirklich sehr geholfen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige