Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1036to1040
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
Inhaltsverzeichnis

Wie funktioniert Array

Wie funktioniert Array
09.01.2009 22:45:00
adi
Hallo kann mir einer helfen?
es gibt 1 Tabelle in der sind eine Hebeliste und Ga_1_32
Nach Eingabe einer Zahl sollen aus der Hebeliste die Daten, die rechts von der Zahl liegen,
eingelesen werden. Dann sollen die Daten nach Ga_1_32 abgelegt werden.
Der unten stehende Code legt die Daten nicht an der richtigen Stelle ab.
Ich weis nicht woran das liegt. Ich möchte gerne die funktionsweise der Array
Formel verstehen, kann jemand zwischen den Zeilen eine Erklärung schreiben?
Option Explicit

Sub Garten_Test_1_32_Übertragen()
Dim SpaH As Long, SpaG, wksH As Worksheet, wksG As Worksheet, Finde As Range
Dim GartenNr
Set wksH = Worksheets("Hebeliste")
Set wksG = Worksheets("Ga_1_32")
SpaG = Array(11, 13, 14, 15, 16, 18, 20, 22, 23, 24, 26, 28, 29, 30, 31)
' Application.ScreenUpdating = False
With wksG
GartenNr = InputBox("Garten-Nr. ACHTUNG Zahl zwischen 1 + 32  :", "GartenNr", Selection())
If Not IsNumeric(GartenNr) Then Exit Sub
If GartenNr  32 Then: MsgBox "Die Eingabe ist zu gross": Exit Sub
.Unprotect
wksH.Range("A2").Value = GartenNr         'kopiert die Nr in A2
Set Finde = wksH.Range("A4:A35").Find(GartenNr)
If Finde Is Nothing Then
MsgBox "GartenNr nicht gefunden."
Exit Sub
End If
For SpaH = 0 To 14
.Cells(GartenNr + 4, SpaG(SpaH)) = wksH.Cells(Finde.Row, 1 + SpaH)
Next SpaH
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.StatusBar = "Der Betrag:  " & GartenNr & " ist eingetragen worden."
MsgBox "Der Betrag:  " & GartenNr & " ist eingetragen worden."
.Range("A3").Select
End With
Application.ScreenUpdating = True
End Sub


Beispiel Tabelle

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie funktioniert Array
09.01.2009 22:51:34
adi
Userbild
Userbild
AW: Wie funktioniert Array
09.01.2009 22:59:00
adi
Noch ein paar Erklärungen zu Tabelle.
Wenn ich 1 gewählt habe soll z. B. der Wert 83,88 gelesen werden und in das andere Tabellenblatt
unter Pacht Verein eingetragen werden, die anderen Daten ebenso.
Gruß Adi
AW: Wie funktioniert Array
10.01.2009 11:32:00
Gerd
Hallo Adi,
nimm eine leere Tabelle , lass mal laufen u. ändere anschließend die Werte im Array ab.

Sub test()
Dim vntArrayEinfügeSpaltennummer As Variant
Dim lngAusgabezeile As Long
Dim int_Schleifenzähler_und_Index_des_vntArrayEinfügeSpaltennummer As Integer
vntArrayEinfügeSpaltennummer = _
Array(11, 13, 14, 15, 16, 18, 20, 22, 23, 24, 26, 28, 29, 30, 31)
lngAusgabezeile = 10
For int_Schleifenzähler_und_Index_des_vntArrayEinfügeSpaltennummer = 0 To 14
ActiveSheet.Cells(lngAusgabezeile, _
vntArrayEinfügeSpaltennummer _
(int_Schleifenzähler_und_Index_des_vntArrayEinfügeSpaltennummer)) = _
"Ausgabezeile=" & lngAusgabezeile & " Ausgabespalte" & _
"(" & int_Schleifenzähler_und_Index_des_vntArrayEinfügeSpaltennummer & "):=" & Chr(10) & _
vntArrayEinfügeSpaltennummer( _
int_Schleifenzähler_und_Index_des_vntArrayEinfügeSpaltennummer)
Next
End Sub


Gruß Gerd

Anzeige
AW: Wie funktioniert Array
10.01.2009 13:25:33
adi
Hallo Gerd
Danke erst einmal für deine Hilfe
dein Beispiel habe ich gelesen und auch verstanden,
aber in der echten Tabelle funktioniert etwas nicht.
Der erste Betrag aus der Hebeliste wird eine Spalte
zu weit nach rechts verschoben und wenn im
Makro dieses steht (For SpaH = 0 To 14) dann
wird die Garten-Nr mit übertragen, wenn die 0 durch 1
ersetzt wird, dann fehlt die Garten-Nr, aber es ist um
1 Spalte zu weit nach rechts
Um es kurz zu machen, habe ich die komplette Tabelle
hochgeladen. Am besten schau dir es mal an.
Gruß Adi
https://www.herber.de/bbs/user/58254.xls
Anzeige
AW: Wie funktioniert Array
10.01.2009 15:42:56
Gerd
Hallo Adi,
vieleicht geht es so, mit lookat?
Userbild
Gruß Gerd
AW: Wie funktioniert Array
10.01.2009 17:37:52
adi
Hallo Gerd,
der Fehler ist noch der gleiche
es wird die Garten-Nr. mit übertragen,
das darf nicht sein.
Könntest du noch mal etwas aus testen?
Gruß Adi
AW: neuer Vorschlag
10.01.2009 18:20:45
Erich
Hallo Adi,
probier mal

Option Explicit
Sub Garten_Test_1_32_Übertragen()
Dim SpaH As Long, SpaG, wksH As Worksheet, wksG As Worksheet
Dim varEin As Variant, GartenNr As Long, lngZH As Long, lngZG As Long
Set wksH = Worksheets("Hebeliste")
Set wksG = Worksheets("Ga_1_32")
SpaG = Array(11, 13, 14, 15, 16, 18, 20, 22, 23, 24, 26, 28, 29, 30, 31)
' Application.ScreenUpdating = False
If IsNumeric(Cells(ActiveCell.Row, 1)) Then
GartenNr = Cells(ActiveCell.Row, 1)
Else
GartenNr = 1
End If
With wksH
varEin = InputBox("Garten-Nr. ACHTUNG Zahl zwischen 1 + 32  :", _
"GartenNr", GartenNr)
If Not IsNumeric(varEin) Then Exit Sub
GartenNr = CLng(varEin)
If GartenNr  32 Then: MsgBox "Die Eingabe ist zu gross": Exit Sub
.Unprotect
.Range("A2").Value = GartenNr         'kopiert die Nr in A2  ' nötig?
' bestimme Zeile in wksH
varEin = Application.Match(GartenNr, .Range("A4:A35"), 0)
If Not IsNumeric(varEin) Then
MsgBox "GartenNr " & GartenNr & " in " & .Name & " nicht gefunden."
Exit Sub
End If
lngZH = CLng(varEin) + 3  ' da Nr. 1 in Zeile 4
End With
With wksG                                    ' bestimme Zeile in wksG
varEin = Application.Match(GartenNr, .Range("A5:A36"), 0)
If Not IsNumeric(varEin) Then
MsgBox "GartenNr " & GartenNr & " in " & .Name & " nicht gefunden."
Exit Sub
End If
lngZG = CLng(varEin) + 4  ' da Nr. 1 in Zeile 5
For SpaH = 0 To 14
.Cells(lngZG, SpaG(SpaH)) = wksH.Cells(lngZH, 2 + SpaH)
Next SpaH
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.StatusBar = "Der Betrag:  " & GartenNr & " ist eingetragen worden."
MsgBox "Der Betrag:  " & GartenNr & " ist eingetragen worden."
'      .Range("A3").Select
End With
Application.ScreenUpdating = True
End Sub

Die richtige Zeilennr. wird jetzt bei beiden Blättern mit Match bestimmt.
Da die Zeilen in "Ga_1_32" nicht nach GartenNr sortiert sind, kann man hier die Zeilennr. nicht einfach
als GartenNr + 4 berechnen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: neuer Vorschlag
10.01.2009 20:20:00
adi
Hallo Erich,
du bist ein klasse Makro-Mann,
du hast das Problehm gelöst, an dem
andere schon einige Zeit arbeiten.
Vielen Dank
Gruß Adi
AW: noch ein kleines Probl.
10.01.2009 21:02:44
adi
Hallo Erich, Das Programm läuft gut,
vor dem Ende des Makros möchte ich, dass die Tabelle „Ga_1_32“ noch
nach Beleg-Nr sortiert wird.
Das unten stehende Makro habe ich aufgezeichnet,
es klappt aber nicht.
Wo ist das Problehm?
MsgBox "Der Betrag: " & GartenNr & " ist eingetragen worden."
Range("A5:AK36").Select ' zum Schluss werden alle Daten nach Beleg-Nr sortiert
Selection.Sort Key1:=Range("C5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True
Range("A3").Select
Anzeige
AW: Sort am Ende
11.01.2009 00:11:26
Erich
Hallo Adi,
in dem Makro wird Spalte C von "Ga_1_32" nicht beschrieben.
Woher kommt also die Beleg-Nr.? Nebenbei: Was hat sie mit der Garten-Nr zu tun?
Hat es einen Sinn, vor der evtl. manuellen Eingabe der Beleg-Nr. danach zu sortieren?
Der Programmteil mit dem Sort läuft ansonsten bei mir problemlos.
Ich habe ihn so eingebaut

For SpaH = 0 To 14
.Cells(lngZG, SpaG(SpaH)) = wksH.Cells(lngZH, 2 + SpaH)
Next SpaH
' ---------- Codezeilen sind unverändert, nur folgende 3 Zeilen für den Sort eingefügt
.Range("A5:AK36").Sort Key1:=.Range("C5"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.StatusBar = "Der Betrag:  " & GartenNr & " ist eingetragen worden."

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Sort am Ende
11.01.2009 13:39:16
adi
Hallo Erich, danke für deine Mühe,
es ist so, die Gartenbeiträge trudeln im laufe der Monate bei
der Bank ein. Der Kassierer holt sich bei der Bank die Auszüge
und gibt den eingezahlten Betrag in der Spalte „Einnahmen“ ein.
In der Spalte „C“ wird die Beleg-Nr. in der Zeile
des Gartens, (also Garten-Nr) der den Betrag gezahlt hat
eingetragen, in diesem Moment sind die Beleg-Nr. nicht geordnet
deshalb soll nach verlassen des Makros nach Beleg-Nr. Sortiert werden.
Der Kassierer will es so haben.
Dein Vorschlag werde ich gleich testen.
Gruß Adi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige