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

Statistik

Statistik
15.08.2006 08:07:14
Walter
Hallo Excelfreunde,
Wer kann einem VBA-Unissenden helfen?
Ich möchte die Daten aus der Eingabemaske per Mausklick in Tabelle 2 übertragen.
https://www.herber.de/bbs/user/35800.xls
Danke für die Hilfe
Gruß
Rentner Walter
aus dem nördlichen Nordhessen

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Statistik
15.08.2006 09:08:47
Hans W. Herber
Hallo Walter,
die Tabelle im 1. Arbeitsblatt ist leider etwas unglücklich aufgebaut. Die Werte können nicht in einer Schleife übergeben werden. Die Übergabe für den ersten Wert, die Du ja erweitern kannst:

Sub Uebertragen()
Dim iRow As Integer
With Worksheets("Tabelle2")
iRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(iRow, 1).Value = Range("F4").Value
Range("F4").ClearContents
End With
End Sub

gruss hans
AW: Statistik
15.08.2006 11:11:08
Walter
Danke Hans,
Vielen Dank für Deine Hilfe,
hättest Du vieleicht oder auch einen Tip für die Eingabemaske?
Gruß
Rentner Walter
aus dem nördlichen Nordhessen
Anzeige
AW: Statistik
15.08.2006 11:08:30
ingUR
In de Tat, Walter,
wie schon Hans bemerkte, eine unglückliche Gestaltung der Tabelle, um sie für eine Schleifenprogrammierung zu nutzen, zumal, wenn an mögliche Erwiterungen denkt.
Darüber hinaus habe ich, wenn ich denn aufmerksam geschaut habe, stimmt die überschrifenanzahl auf Tabelle 2 (A2:S2 = 19) nicht der Anzahl der Felder überein, die in der Tabelle 1 mit roter Schriftfarbe gefüllt sind (=1 + 2*8 + 1 = 18).

strArd = Array("A4", _
"F8,D8", _
"J8,H8", _
"N8,L8", _
"F16,D16", _
"J16,H16", _
"F24,D24", _
"J24,H24", _
"N28, A1", _
"N14, N16")
Diese Zuweisung an eine Feldvariable enthalt also die Zellenadressen der Tabelle 1, deren Inhalt nach Tabelle 2 hin übertragen werden sollen. Erweiterungen und Äderungen sind hier möglich, wobei die Reihenfolge die Ausgabereighenfolge in der Tabelle 2 bestimmt.
Das Zellenpaar "N28,A1" deutet mit A1 auf den fehlenden Bezug.
Unglücklich beim programmgesteuerten Löschen von Zelleninhalte, erweist sich auch die verbundenen Zelle A4:B6. Darüber hinaus ist zu beachten, dass Zelle N16 mit auf den Inhalt von A20 Bezug nimmt.
Der Prozedurcode lautet:

Dim ws2 As Worksheet
Dim c As Range, rng1 As Range
Dim item As Integer, newR As Integer
Dim strAdr() As String, strRngAdr As String
strArd = Array("A4", _
"F8,D8", _
"J8,H8", _
"N8,L8", _
"F16,D16", _
"J16,H16", _
"F24,D24", _
"J24,H24", _
"N28, A1", _
"N14, N16")
For item = 0 To UBound(strArd)
strRngAdr = strRngAdr + strArd(item) + ","
Next item
strRngAdr = Left(strRngAdr, Len(strRngAdr) - 1)
Set rng1 = Range(strRngAdr)
Set ws2 = Worksheets("Tabelle2")
item = 0
newR = ws2.Cells(ws2.Rows.Count, 1).End(xlUp).Row + 1
For Each c In rng1
item = item + 1
ws2.Cells(newR, item).Value = c
If item > 1 Then
c.ClearContents
Else
Range("A4:B6").ClearContents
End If
Next
Set ws2 = Nothing
Set rng1 = Nothing
End Sub
Nun kommt es darauf an wie Du die Prozedur aufrufen willst. Als Makro-Aufruf ([F8]) fügst Du ein Modul in die Arbeitsmappe ein und vergibst einen Aufrufnamen:

Sub Statistik()
End Sub
Den Code copierst Du zwischen die beiden Prozedurbegrenzungszeilen.
Da Di das Feld "Speichern" auf Deiner Arbeitsmappe angelegt hast, scheinst Du den Weg über eine Schaltfläche vorzuziehen. Lege also ein CommandButton aus der Werkzeugkiste auf dem Tabellenblatt 1 an. Im Entwurfmodus (Ziehquadrate sin auf dem Rand des Steuerelemetes zu sehen) mit Rechtsklick die Eigenschaften aufrufen und unter der Eigenschaft "Caption" den gewünschten Sichtnamen auf der Schaltfläche eingeben.
Noch im Entwurfsmodus, nun ein Doppelklick auf dei Schaltfläche und das VBA-Fenster geht auf und die Prozedurbegrezungszeilen werden geschriebe (wenn bereits vorhanden, wird in diese Prozedur zum Editieren gesprungen):

Private Sub CommandButton1_Click()
End Sub
Der Programmcode ist nun hier einzufügen.
Auf dem Arbeitsblatt ist der entwurfsmodus auszuschalten und die Schatfläche sollte auf Klick reagieren.
Viel Erfolg.
Uwe
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige