31.01.2013 Aufrufe

Grundlagen der Programmierung mit VBA Visual Basic for

Grundlagen der Programmierung mit VBA Visual Basic for

Grundlagen der Programmierung mit VBA Visual Basic for

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Next j<br />

Next i<br />

Beispiel. Anwendung von LBound und UBound.<br />

Sub PrintMatrix(Matrix)<br />

' Anzeigen von Matrix "Matrix" <strong>mit</strong> <strong>der</strong> Message Box<br />

Dim i As Integer, j As Integer<br />

Dim msg As String<br />

Dim CR As String: CR = Chr(13) & Chr(10)<br />

For i = LBound(Matrix, 1) To UBound(Matrix, 1) ' 1. Index<br />

For j = LBound(Matrix, 2) To UBound(Matrix, 2) ' 2. Index<br />

msg = msg & Matrix(i, j) & " "<br />

Next j<br />

msg = msg & CR<br />

Next i<br />

MsgBox msg<br />

End Sub<br />

Aufgabe. Erstellen Sie ein Programm, um die Transponierte einer Matrix A(n,m) zu bestimmen. Benutzen<br />

Sie LBound und UBound, um die Indexgrenzen zu er<strong>mit</strong>tlen.<br />

3.3.5 dynamische Arrays<br />

Die Dimension dynamischer Arrays wird im Laufe des Programmes bestimmt und ggf. modifiziert.<br />

Elegante Möglichkeit zur Bearbeitung von Daten dynamischen Umfangs.<br />

Syntax<br />

Dim Name ()<br />

ReDim [Preserve] Name (Index1, Index2, ...)<br />

Erase Name<br />

Parameter Verwendung<br />

Dim Anfangsdefiniton ohne Größenangabe!<br />

ReDim Modifikation <strong>der</strong> Dimension. Achtung: wird das Array verkleinert, gehen die<br />

"überstehenden" Daten verloren.<br />

Standardmäßig wird das Feld neu initialisiert.<br />

Mit Preserve bleiben die Daten erhalten.<br />

Erase Feld wird aus dem Speicher gelöscht.<br />

Name Name des Arrays<br />

IndexN Dimensionsvereinbarungen wie bei statischen Arrays<br />

Public/Static Wie bei Variablen<br />

Beispiel. Redim <strong>mit</strong> und ohne Preserve. Bei mehrdimensionalen Arrays kann Preserve nur auf die<br />

letzte Dimension angewendet werden.<br />

Sub MatReDim()<br />

Dim MatrixA() As Integer, MatrixB() As Integer ' Deklaration<br />

Dim i As Integer, j As Integer, n As Integer<br />

ReDim MatrixA(1, 1): ReDim MatrixB(1, 1) ' 1. Anpassung<br />

n = 0<br />

For i = 0 To 1<br />

For j = 0 To 1<br />

n = n + 1: MatrixA(i, j) = n: MatrixB(i, j) = n<br />

Next j<br />

Next i<br />

PrintMatrix (MatrixA): PrintMatrix (MatrixB)<br />

26<br />

ReDim MatrixA(2, 2) ' 2. Anpassung<br />

ReDim Preserve MatrixB(1, 2) ' ReDim <strong>mit</strong> Preserve nur<br />

' für letzten Index möglich!<br />

For i = 0 To 2<br />

n = n + 1: MatrixA(2, i) = n<br />

n = n + 1: MatrixA(i, 2) = n<br />

If i < 2 Then MatrixB(i, 2) = n

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!