Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Array

Array
15.02.2008 19:46:49
[
Hallo Zusammen,
kurze Verständnis- oder Bezeichnungsfrage: In grauer Computervorzeit gab es eine Programmiersprache namens Turbo Pascal (TP). Hoffentlich erinnert sich jemand?
In TP gab es als Variable ein Array, das mehrere Variablen enthielt, die über eine Indexnummer angesprochen werden konnten. Z.B.
arraybezeichnung.[1] = beliebiger Inhalt 1
arraybezeichnung.[2] = beliebiger Inhalt 2 ...
Der Inhalt jedes einzelnen Array-Feldes konnte während eines Programms verändert werden. In Excel habe ich zwar auch Arrays gefunden, allerdings
" Dim A As Variant
A = Array(10,20,30)
B = A(2)"
Das heißt, daß das komplette Array zu Beginn definiert werden muß (hier 10, 20 und 30) und diese Werte können dann im Programmablauf aufgerufen/ausgelesen werden. Ist es möglich, diese während des Programmablaufs auch gezielt zu verändern (neue Werte eintragen)? Oder gibt es etwas anderes, ähnliches?
Hoffe, ich habe mich nicht zu umständlich ausgedrückt ;-)
Vielen Dank
[ stefan ]

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array
15.02.2008 19:50:00
Hajo_Zi
Hallo Stefan,
die Größe mss nicht zu Anfang festgelegt werden, das kann man im Ablauf auch mit ReDim festlegen aber alle werte gehen verloren oder ReDim Preserve TextBoxen3(1 To TextCount3) die eingetragenen Werte bleiben erhalten.

AW: Array
15.02.2008 20:03:11
[
Hallo Hajo,
vielen Dank für die superschnelle Antwort. Ich habe in der Excel-Hilfe deinen Tip nachgeschaut. Ich glaube, das paßt aber nicht ganz genau - vielleicht habe ich mich zu kompliziert ausgedrückt, was ich suche ist eine Lösung für folgende Aufgabe (natürlich um viele einzelne Variablen zu sparen und den Zugriff auf Inhalte zu beschleunigen:
Ein Array (Hauptvariable) namens [Buch] mit 20 Untervariablen für z.B. die einzelnen Kapitelnamen jeweils als String.
In TP wurden einzelne Kapitelnamen dann mit Buch.[1] für das erste Kapitel, Buch.[2] für den zweiten Kapitelnamen usw. angesprochen. Ebenso konnte über Buch.[10] während des Programms der eventuell schon vorhandene Kapitelnamen geändert werden.
Stehe ich jetzt bei Deinem obigen Hinweis auf dem Schlauch und sollte Feierabend machen oder hast Du vielleicht noch einen Hinweis?
Gruß [ stefan ]

Anzeige
AW: Array
15.02.2008 20:06:58
Hajo_Zi
Hallo Stefan,
meine Beispiele bezogen sich jetzt von eine eindimensionalen Array, das geht aber auch bei mehr Dimensionen. In VBA famgen die Arrays bei 0 an, wenn man es nicht anders festgelgt hat. Ich sehe DEin Problem nicht?
Gruß Hajo

AW: Array
15.02.2008 20:12:59
[
Hallo Hajo,
habe Deine Hinweis verstanden und mache Feierabend :-)
Vielen Dank für Deine Hilfe, werde das Ganze nochmal neu angehen und Deine Hinweise wirken lassen.
Gruß [stefan ]

AW: Array
15.02.2008 21:20:00
Nepumuk
Hallo Stefan,
mal ein Beispiel, wie du so etwas in VB machen kannst.
Option Explicit

Private Type Buch 'Typ Buch anlegen
    Kapitel() As String 'variable Anzahl von Kapiteln in Büchern definieren
End Type

Public Sub Test()
    
    Dim udtBuch() As Buch 'variable Anzahl von Büchern anlegen
    Dim intIndex As Integer
    
    Redim udtBuch(1 To 10) '10 Bücher anlegen
    
    For intIndex = 1 To 10
        Redim udtBuch(intIndex).Kapitel(1 To 10) 'in allen 10 Büchern 10 Kapitel anlegen
    Next
    
    With udtBuch(1) 'alle 10 Kapitel füllen
        .Kapitel(1) = "A"
        .Kapitel(2) = "B"
        .Kapitel(3) = "C"
        .Kapitel(4) = "D"
        .Kapitel(5) = "E"
        .Kapitel(6) = "F"
        .Kapitel(7) = "G"
        .Kapitel(8) = "H"
        .Kapitel(9) = "I"
        .Kapitel(10) = "J"
    End With
    
    Redim Preserve udtBuch(1 To 12) 'Anzahl der Bücher um 2 erhöhen
    
    Redim Preserve udtBuch(1).Kapitel(1 To 20) 'Anzahl der Kapitel im Buch 1 um 10 erhöhen
    
    With udtBuch(1) 'restlichen 10 Kapitel füllen
        .Kapitel(11) = "K"
        .Kapitel(12) = "L"
        .Kapitel(13) = "M"
        .Kapitel(14) = "N"
        .Kapitel(15) = "O"
        .Kapitel(16) = "P"
        .Kapitel(17) = "Q"
        .Kapitel(18) = "R"
        .Kapitel(19) = "S"
        .Kapitel(20) = "T"
    End With
    
    Redim Preserve udtBuch(1 To 7) 'Anzahl der Bücher um 5 reduzieren
    
    Redim Preserve udtBuch(1).Kapitel(1 To 15) 'Anzahl der Kapitel im Buch 1 um 5 reduzieren
    
End Sub

Gruß
Nepumuk

Anzeige
SUPER. VIELEN DANK, jetzt hat´s geschnackelt (oT)
16.02.2008 00:27:31
[
SUPER. VIELEN DANK, jetzt hat´s geschnackelt (oT)

Ausbaufähig
16.02.2008 09:45:57
Nepumuk
Hallo Stefan,
damit das nicht untergeht. Benutzerdefinierte Datentypen (User definite type daher der Präfix udt) lassen sich natürlich kombinieren, so dass der erste Typ Inhalt des zweiten Typs wird. Beispiel:
Option Explicit

Private Type Kapitel 'Typ Kapitel anlegen
    Ueberschrift As String 'einzelner String
    Seiten() As String 'variable Anzahl von Seiten in Kapiteln definieren
End Type

Private Type Buch 'Typ Buch anlegen
    udtKapitel() As Kapitel 'variable Anzahl von benutzerdefinierten Kapiteln in Büchern definieren
End Type

Public Sub Test()
    
    Dim udtBuch() As Buch 'variable Anzahl von Büchern anlegen
    Dim intIndex1 As Integer, intIndex2 As Integer
    
    Redim udtBuch(1 To 10) '10 Bücher anlegen
    
    For intIndex1 = 1 To 10
        Redim udtBuch(intIndex1).udtKapitel(1 To 10) 'in allen 10 Büchern 10 Kapitel anlegen
        
        For intIndex2 = 1 To 10
            Redim udtBuch(intIndex1).udtKapitel(intIndex2).Seiten(1 To 100) 'in jedem Kapitel 100 Seiten anlegen
        Next
    Next
    
    With udtBuch(1) 'alle 10 Kapitelüberschriften in Buch 1 füllen
        .udtKapitel(1).Ueberschrift = "A"
        .udtKapitel(2).Ueberschrift = "B"
        .udtKapitel(3).Ueberschrift = "C"
        .udtKapitel(4).Ueberschrift = "D"
        .udtKapitel(5).Ueberschrift = "E"
        .udtKapitel(6).Ueberschrift = "F"
        .udtKapitel(7).Ueberschrift = "G"
        .udtKapitel(8).Ueberschrift = "H"
        .udtKapitel(9).Ueberschrift = "I"
        .udtKapitel(10).Ueberschrift = "J"
    End With
    
    With udtBuch(1).udtKapitel(1) 'alle 100 Seiten in Buch 1 Kapitel 1 füllen
        For intIndex1 = 1 To 100
            .Seiten(intIndex1) = CStr(intIndex1)
        Next
    End With
    
    Redim Preserve udtBuch(1 To 12) 'Anzahl der Bücher um 2 erhöhen
    
    Redim Preserve udtBuch(1).udtKapitel(1 To 20) 'Anzahl der Kapitel im Buch 1 um 10 erhöhen
    
    Redim Preserve udtBuch(1).udtKapitel(1).Seiten(1 To 200) 'Anzahl der Seiten in Buch 1 Kapitel 1 auf 200 erhöhen
    
    With udtBuch(1).udtKapitel(1) 'restlichen 100 Seiten in Buch 1 Kapitel 1 füllen
        For intIndex1 = 101 To 200
            .Seiten(intIndex1) = CStr(intIndex1)
        Next
    End With
    
    With udtBuch(1) 'restlichen 10 Kapitelüberschriften in Buch 1 füllen
        .udtKapitel(11).Ueberschrift = "K"
        .udtKapitel(12).Ueberschrift = "L"
        .udtKapitel(13).Ueberschrift = "M"
        .udtKapitel(14).Ueberschrift = "N"
        .udtKapitel(15).Ueberschrift = "O"
        .udtKapitel(16).Ueberschrift = "P"
        .udtKapitel(17).Ueberschrift = "Q"
        .udtKapitel(18).Ueberschrift = "R"
        .udtKapitel(19).Ueberschrift = "S"
        .udtKapitel(20).Ueberschrift = "T"
    End With
    
    Redim Preserve udtBuch(1 To 7) 'Anzahl der Bücher um 5 reduzieren
    
    Redim Preserve udtBuch(1).udtKapitel(1 To 15) 'Anzahl der Kapitel im Buch 1 um 5 reduzieren
    
    Redim Preserve udtBuch(1).udtKapitel(1).Seiten(1 To 50) 'Anzahl der Seiten in Buch 1 Kapitel 1 um 150 reduzieren
    
End Sub

Nach diesem Muster könntest du jetzt in jeder Seite eine variable Anzahl von Zeilen anlegen in denen sich wiederum eine variable Anzahl von Wörtern, und in diesen sich wiederum eine variable Anzahl von Buchstaben befinden. Damit lassen sich also recht komplexe Strukturen anlegen.
Gruß
Nepumuk

Anzeige
AW: Ausbaufähig
16.02.2008 10:15:00
[
Guten Morgen Nepumuk,
ich kann mein DANKE von gestern nur wiederholen.
[ stefan ]

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige