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

Array

Array
26.05.2008 14:05:04
Frank
Hallo VBA-Fans
Ich bin blutiger Anfänger und verstehe häufig die Logik von VBA nicht.
zB. Range(„A1:E1“).Value = Array(Nr, LWB, Bez, Typ, FGN) ist OK
(Nr, LWB, Bez, Typ, FGN) sind einzelne Variablen.
Es wirt der Inhalt der Variablen in den Bereich Range(„A1:E1“) eingetragen.
Jetzt möchte ich den Inhalt der Zeile in einzelne Variable schreiben.
Zurzeit realisiere ich das so.
Nr = Range(“A1”).Value
LWB = Range(“B1”).Value
Bez = Range(“C1”).Value
Typ = Range(“D1”).Value
FGN = Range(“E1”).Value
wie Langweilig !!!!
Warum kann ich nicht
Array(Nr, LWB, Bez, Typ, FGN) = Range(„A1:E1“).Value ’ ?
Wenn es nicht möglich ist, wie kann man es besser machen ?

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array
26.05.2008 14:19:00
Renee
Hi Frank,
Mit der Funktion Array(Wert1, Wert2...) wird ein Array aufgebaut.
Du kannst aber nicht Variablen! damit aufbauen. Die Alternative ist, eine einzige Array-Variable zu definieren, also z.b.:

Dim MeinArray
MeinArray = Range("A1:E1")
... MeinArray(1, 1) entspricht nun A1
... MeinArray(1, 2) entspricht B1 etc...


GreetT Rennée

AW: Array
11.06.2008 19:23:00
Frank
Hallo Renee,
ich danke dir für deine Antwort, nur leider verliere ich die Übersicht, wenn ich ein Array-Variable in dieser Form benutze.
Da ist das Beispiel vom Daniel übersichtlicher, da die einzelnen Variablen, die im Array enthalten sind
Kurzbezeichnungen Haben und keine Nr.
Nochmals Vielen Dank
Frank

Anzeige
Schon 5 analoge Codezeilen "langweilig",...
27.05.2008 01:02:00
Luc:-?
...Frank?
...und dann (vor lauter Langeweile ?) nicht auf Renée's (wahrscheinlich auch langweiligen) Vorschlag reagieren... x! x! x!
Aber bitte, wenn deine VBA-Kenntnisse auch (noch) bescheiden sind, du kannst es gern auch so haben wie du willst, allerdings deutlich aufwendiger und wahrscheinlich ja auch nicht auf deinem Level, aber in 1-2 Jahren nutzt dir ja vielleicht folgendes Bsp, wer weiß... ;-)
Dokumentklassenmodul der Tabelle:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo fx
With Application
.EnableEvents = False
If Not Intersect(Target, Range("A1:E1")) Is Nothing Then
Call VarTest
Call VarTest(1)
MsgBox "Nr " & Nr & vbLf & "LWB " & LWB & vbLf & "Bez " & _
Bez & vbLf & "Typ " & Typ & vbLf & "FGN " & FGN
End If
fx:     .EnableEvents = True
End With
End Sub


Normales Modul:


Option Explicit
Public Nr As Long, LWB, Bez, Typ, FGN
Rem © LSr•CyWorX•xl 20080526
Sub VarTest(Optional ByVal CDel As Boolean = False)
Static delZ As Integer
Dim m As VBComponent, x As Variant
Const alleVar As String = "Nr LWB Bez Typ FGN"
With ActiveWorkbook.VBProject
For Each m In .VBComponents
If m.Name = "Modul1" Then
With m.CodeModule
If CDel Then
.DeleteLines .ProcStartLine("SetzeVar", vbext_pk_Proc) + 3, delZ
Else: delZ = 0
For Each x In Split(alleVar, " ")
delZ = delZ + 1
.InsertLines .ProcStartLine("SetzeVar", vbext_pk_Proc) + 2 + _
delZ, vbTab & x & "=Range(""A1:E1"").Cells(1," & delZ & ")"
Next x
Application.Run "SetzeVar"
End If
End With
Exit For
End If
Next m
End With
End Sub
Sub SetzeVar(Optional ByVal dummy As Boolean)
Rem Hiernach wdn Befehle eingefügt:
End Sub


Gruß Luc :-?
PS: Allerdings verwende ich so etwas nicht für diesen Zweck! Es gibt da noch andere, interessantere Einsatzmöglichkeiten...

Anzeige
AW: Array
28.05.2008 01:27:27
Daniel
Hi
wenn dir langweilig ist, dann beschäftige dich doch mal ein bisschen mit Variablentypen, Objekt- und Array-Variablen, vielleicht verstehtst du es dann besser.
deine Problematik könnte man anders (ich sage jetzt nicht "besser") so lösen:
1. Variablen und Konstantendeklaration:

const Nr = 1
const LWB = 2
const Bez = 3
const Typ = 4
const FGN = 5
dim MeineVariablen as Variant


2. Datenzuweisung:


MeineVariablen = Range("A1:E1").value


3. verwenden der Variablen im ProgrammCode
um beispielsweise jetzt Bez mit Typ zu mulitplizieren und das Ergebenis der Variable FGN zuzuweisen, verwendet man folgenden code:


MeineVariablen(1, FGN) = MeineVariablen(1, Typ) * MeineVariablen(1, Bez)


ob das jetzt Spannender ist, als deine Mehtode, weiß ich nicht, manchmal ist es aufdiese Weise hilfreich, wenn alle Variablen nach dem gleichen Schema verarbeitet werden sollen, weil ich so eine Schleife verwenden kann.
Beispiel: alle 5 Variablen sollen mit 10 mulipliziert werden:


For i = 1 to 5
MeineVariablen(1, i) = MeineVariablen(1, i)*10
next


gruß, Daniel

Anzeige
Das ist aber dann auch nicht dasselbe,...
28.05.2008 14:01:00
Luc:-?
...Daniel,
sondern eher eine Variante von Renée's Lösung... ;-)
Das könntest du aber so auch einfacher (allerdings global) mit einer Enum-Routine erreichen...
Gruß Luc :-?

AW: Das ist aber dann auch nicht dasselbe,...
28.05.2008 18:50:00
Daniel
Hi
stimmt, ist das gleiche wie Renes lösung, halt mit der verbesserung, daß die originial-Variablenbezeichungen trotzdem noch irgendwie vorkmmen und verwendet werden können (wenn auch etwas anders als im Original).
das dürfe dann etwas leicher zu lesen sein, als ein reiner Nummern-Code.
von ENUM hab ich noch nie was gehört, kann mir aber aus der Hilfe nicht so ganz ableiten, wie das hier helfen soll.
Gruß, Daniel

Anzeige
Damit kannst du die Namen lfd durch...
28.05.2008 19:46:48
Luc:-?
...nummerieren, Daniel.
wie du es ja hier auch getan hast...
Gruß Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige