DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: VB.NET | Thema: For-Each-Schleife funktioniert nicht | Von: G. Guest ( 18.05.2006 08:06)

Hallo,

ich habe in MS Excel 2003 einen Makro geschrieben, der in Zeile 4 (beginnend ab der Spalte A) alle Zellen nach Inhalten durchsucht.
Also angefangen bei Range("A4").Value, Range("B4").Value, Range("C4").Value usw bis eine leere Zelle gefunden wurde, dann soll beendet werden.

In VBA habe ich das über eine Schleife gelöst:



For Each C In Sheets("Basicdata").Range("4:4")

If C.Value <> "" Then


debug.print C.Value '<- um den aktuellen Zelleninhalt auszugeben
debug.print C.Address '<- um die aktuelle Spaltenbezeichnung (z. B. A) auszugeben

Else
Exit For
End If

Next C



In VBA funktioniert das auch problemlos.

Aber in VB.NET stoße ich auf einige Probleme damit. So wird mir z. B. das "C" in der For-Each-Schleife als Fehler markiert.
Ich habe es daher deklariert: Dim C as Object. Bin mir nicht sicher, ob der Datentyp korrekt ist?

Im Internet habe ich schon ein paar Beispiele gefunden bzgl. For-Each-Schleifen in Verbindung mit Listen. Aber nicht wie man in Excel die Zellen einer Zeile sich ausgeben lässt…

In VB.NET habe ich den obigen VBA-Code entsprechend umgeschrieben:


Public oXL As Excel.Application
Public oWB As Excel.Workbook 'Öffnen der Datei
Public oSheetBasicdata As Excel.Worksheet 'Aufruf der Tabelle "Basicdata"
Public oRng As Excel.Range 'eine Zelle wird instanziert
Dim xElement As Object

' Start Excel and get Application object.
oXL = CreateObject("Excel.Application")
oXL.Visible = True

'Aufruf der xls-Datei test.xls
oWB = oXL.Workbooks.Open("C:\test.xls")

'Aufruf der Tabelle "Basicdata"
oSheetBasicdata = oWB.Sheets("Basicdata")

'der Zelle oRng wird die Spalte A42 im Basicdata-Sheet zugewiesen
oRng = oSheetBasicdata.Range("4:4")

'MessageBox.Show(oRng.Row.ToString())

For Each xElement In oRng
MessageBox.Show(CType(xElement, String))
Next



Bekomme aber leider folgende Fehlermeldung von meinem VS.NET:

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll
Additional information: Member nicht gefunden.

Kerstin


Betreff Von Datum
Re: For-Each-Schleife funktioniert nicht
Kann mir den keiner helfen :-(
G. Guest 19.05.2006 07:16
Re: For-Each-Schleife funktioniert nicht
Hallo Kerstin,<br>probiere es mal bitte damit:<br><br>Dim c As Excel.Range<br><br>For Each c In xl.Selection<br> If Left(c.Value, 1) = ":" Then<br> c.Value = "00" & c.Value<br> ...
Thomas Scherner 19.05.2006 14:06
Re: For-Each-Schleife funktioniert nicht
Hallo Thomas,<br><br>vielen Dank für Deine Antwort u. dem Code, der mir zur Lösung verholfen hat!!<br><br>xl.Selection war der "Übeltäter" ;-)<br><br>LG<br>Kerstin
G. Guest 24.05.2006 15:19

Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Visual Studio 1 Magazin

© Copyright 2003 ppedv AG