Thema Datum  Von Nutzer Rating
Antwort
22.12.2009 16:37:04 vikar
NotSolved
Blau Aw:erstellen von feldern
24.12.2009 10:56:34 Holger
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
24.12.2009 10:56:34
Views:
902
Rating: Antwort:
  Ja
Thema:
Aw:erstellen von feldern
Hallo vikar,
in deinem Makro geht sehr viel durcheinander, so dass es unmöglich ist, alle Fehler zu erkennen, ohne den Kontext zu sehen, z.B. welche Variablen öffentlich deklariert wurden.
Du deklarierst Feld als String, willst es aber als Array verwenden.
Mindestens DSatzNr und EndE haben keinen Wert.
Line Input wird zum Einlesen von Daten aus geöffneten sequentiellen Dateien mit der Dateinummer verwendet (s. VBA-Hilfe).
Ich würde ein Sub anstelle der Function verwenden, da du keinen Rückgebewert erzeugst.
Mit z.B.
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Activate
r = ActiveCell.Row
c = ActiveCell.Column
kannst du die größte Zellen- und Spaltennummer feststellen.
Damit kannst du dein Array Feld dimensionieren: Redim Feld(r-1,c-1)
Mit For-Next-Schleifen kannst du das Array befüllen, z.B.
For i = 0 To r - 1
For j = 0 To c - 1
Feld(i, j) = Cells(i + 1, j + 1)
Next j
Next i
Um den Inhalt auf ein anderes Blatt (hier Tabelle2) zu kopieren, kannst du diesem Vorgang umdrehen, z.B.
Sheets("Tabelle2").Activate
For i = 0 To r - 1
For j = 0 To c - 1
Cells(i + 1, j + 1) = Feld(i, j)
Next j
Next i
Wenn du die Daten aus Feld noch woanders brauchst, solltest du Feld Public oder Private deklarieren, z.B. Public Feld(). Sonst sind sie nach Beendigung der Sub verschwunden.
Den Kopiervorhang kannst auf vielfältige Weise anders und wesentlich eleganter durchführen, sihe z.B. unter Copy in der VBA-Hilfe.
Gruß
Holger




vikar schrieb am 22.12.2009 16:37:04:

hi leute, ich habe gerade erst angefangen VBA zu programmieren und hab nicht wirklich einen durchblick. ich möchte eine unbekannte anzahl von daten(Zeilen) von einem tabellenblatt auslesen, in felder schreiben und auf einem anderem tabellenblatt wieder eintragen. leider kommt bei mir immer der fehler "sub oder funktion nicht deklariert".

Function Felderzeugen()

Dim Feld As String
Dim n As String
'max. Feldanzahl
Dim LetzteBenutzteZeile As Long
'letzter Wert

LetzteBenutzteZeile = ActiveWorkbook.Worksheets("Tabelle1").UsedRange.Rows.Count + ActiveWorkbook.Worksheets("Tabelle1").UsedRange.Row - 1
'ermitteln der Zeile mit letztem Wert
n = Worksheet("Tabelle2").Cells(2, 8)


Application.Worksheets("Tabelle1").Range("A1:letztebenutztezeile" & EndE) = Feld()
For i = LBound(Feld) To i = LetzteBenutzteZeile
ReDim Preserve Feld(DSatzNr)
'legt Feld an, behält Werte
Line Input, Feld(DSatzNr)
'schreibt Daten in Feld
Next i

End Function

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
22.12.2009 16:37:04 vikar
NotSolved
Blau Aw:erstellen von feldern
24.12.2009 10:56:34 Holger
NotSolved