MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 21.03.2017, 00:27   #1
Martin_vie
Standard VBA - Excel VBA Array in ein Tabellenblatt schreiben

Liebe Alle!

Ich würde gerne ein Array von dem ich im Vorhinein noch nicht weiß, wie groß es ist in ein Tabellenblatt schreiben.

Hier mal mein Beispielcode:

Code:

Public Sub matrix()

'groesse der Matrix
    Dim zeilen As Long
    Dim spalten As Long
    Dim matrixA() As Integer
    
    zeilen = InputBox("Wie viele Zeilen soll ihre Matrix haben", , 0)
    spalten = InputBox("Wie viele Spalten soll ihre Matrix haben", , 0)
    
'Eingabe pruefen
    If zeilen <= 0 Or spalten <= 0 Then
            MsgBox "Bitte geben Sie einen gueltigen Wert ein!"
        Exit Sub
    End If
         
    zeilen = zeilen - 1 'Anpassung für das Array
    spalten = spalten - 1 'Anpassung für das Array
    
    ReDim Preserve matrixA(zeilen, spalten) As Integer

    Dim schleifenzeile As Integer
    Dim schliefenspalte As Integer
    
'Befuellen der Matrix A
    For schleifenzeile = 0 To zeilen
        For schliefenspalte = 0 To spalten
            matrixA(schleifenzeile, schliefenspalte) = Int((100 - 1 + 1) * Rnd + 1)
        Next schliefenspalte
    Next schleifenzeile
    
    
    For schleifenzeile = 0 To zeile
        For schliefenspalte = 0 To spalte
            Sheets("Tabelle1").Cells(schleifenzeile + 1, schleifenspalte + 1) = matrixA(schleifenzeile, schliefenspalte)
        Next schliefenspalte
    Next schleifenzeile
    
'Ausgabe
    Debug.Print "Ergebnis für ihre "; zeilen + 1; "x"; spalten + 1; " Matrix ist"
    For schleifenzeile = 0 To zeilen
        For schliefenspalte = 0 To spalten
            Debug.Print "("; schleifenzeile + 1; ","; schliefenspalte + 1; ")"; "="; matrixA(schleifenzeile, schliefenspalte)
        Next schliefenspalte
    Next schleifenzeile

End Sub
Ich hätte angenommen, dass ich das mit einer einfach Schleife schaffe nur leider funktioniert es überhaupt nicht. Ich bekomme immer nur die erste Zelle befüllt.

Wo ist mein Denkfehler? Gibt es vielleicht eine elegantere Lösung für mein Problem?

Vielen Dank an Alle im Voraus!
 
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.03.2017, 03:27   #2
Oge
MOF User
MOF User
Standard

Hallo Martin,

du solltest

Option Explicit

über deine Module schreiben.

__________________

helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Oge ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.03.2017, 08:05   #3
Luschi
MOF Koryphäe
MOF Koryphäe
Standard

Hallo Martin_vie,

einen wichtigen Hinweis hat Dir ja schon Oge gegeben. Dann würde das hier nicht passieren:
- schliefenspalte statt schleifenspalte
Dein Fehler liegt aber hier:
- For schleifenzeile = 0 To zeile statt For schleifenzeile = 0 To zeilen
- For schliefenspalte = 0 To spalte statt For schliefenspalte = 0 To spalten

Statt der Schleifen geht es aber auch so:
Code:

Sheets("Tabelle1").Cells(1, 1).Resize(zeilen + 1, spalten + 1) = WorksheetFunction.Transpose(WorksheetFunction.Transpose(matrixA))
Gruß von Luschi
aus klein-Paris
Luschi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.03.2017, 12:41   #4
GraFri
Neuer Benutzer
Neuer Benutzer
Standard

Hallo

Würde ich so machen:

Code:

Option Explicit

Public Sub matrix()

'groesse der Matrix
    Dim zeilen As Long, spalten As Long
    Dim z As Long, s As Long
    Dim matrixA() As Integer
    
    zeilen = InputBox("Wie viele Zeilen soll ihre Matrix haben", , 0)
    spalten = InputBox("Wie viele Spalten soll ihre Matrix haben", , 0)
    
'Eingabe pruefen
    If zeilen < 1 Or spalten < 1 Then
            MsgBox "Bitte geben Sie einen gueltigen Wert ein!"
        Exit Sub
    End If
         
    ReDim matrixA(1 To zeilen, 1 To spalten) As Integer
    
'Befuellen der Matrix A
    For z = 1 To zeilen
        For s = 1 To spalten
            matrixA(z, s) = Int((100 - 1 + 1) * Rnd + 1)
        Next s
    Next z
    
'Werte zurück in Tabelle schreiben mit variabler Arraygrösse
'Beginn in Zelle A1 (Cells(1, 1)
  Sheets("Tabelle1").Cells(1, 1).Resize(UBound(matrixA, 1), UBound(matrixA, 2)).Value = matrixA
    
    
'Ausgabe
    Debug.Print "Ergebnis für ihre "; zeilen + 1; "x"; spalten + 1; " Matrix ist"
    For z = 1 To zeilen
        For s = 1 To spalten
            Debug.Print "("; z; ","; s; ")"; "="; matrixA(s, z)
        Next s
    Next z

End Sub
mfg, GraFri
GraFri ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.03.2017, 00:15   #5
Martin_vie
Standard

Vielen Dank an Alle!

Alle eure Tipp haben mir ganz toll geholfen
 
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.