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 |
|
|
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!