Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
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
Problem bei VBA & freigegebenen Arbeitsmappen
23.04.2013 10:54:17
Schmitty
Hallo,
da ich mal wieder in meinem alten Thema nicht weiterschreiben kann, geht es jetzt hier weiter... (das alte Thema findet Ihr hier: https://www.herber.de/forum/archiv/1308to1312/t1308934.htm#1308934)
@ Klaus M.vdT.:
Ich habe da noch ein paar Fragen:
1.) Wie kann ich dein VBA in Zukunft ändern, wenn eine neue Spalte (für das Jahr 2014, usw.) hinzukommt.
2.) Ich möchte gerne das Eingabefeld für das Jahr im normalfall freilassen, so dass ich jedes mal gezwungen bin, das Jahr einzutragen. Wie kann ich verhindern, dass wenn ich den Statistik-Button klicke der VBA-Debugger öffnet. lieber währe mir irgendwo eine Anzeige wie "Bitte Jahr eintragen" oder etwas ähnliches.
3.) Wie kann ich dein VBA-Script abändern, dass er jedesmal vor der Berechnung das late Ergebnis löscht. Mir ist nämlich aufgefallen, dass wenn ich z. B. bei der KD-Nr. 1 für 2013 die Berechnung durchführe und da nach aus welchem Grund auch immer noch einmal auf den Statistik-Button drücke, er das vorherige Ergebnis mit dem neuen addiert...
Gruß
Christian

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

Betreff
Datum
Anwender
Anzeige
Das Thema ...
23.04.2013 11:28:25
Klaus
... ist doch schon lange nicht mehr "Freigabemodus", oder?
zu 1)
musst du nicht. Ich habe mir das bereits gedacht und ermittele die Spalte in dieser Zeile:
iColMenge = WorksheetFunction.Match("Gesamtmenge der Lieferungen", Range("A5").EntireRow, False)
es wird der string "Gesamtmenge der Lieferungen" gesucht und ebendiese Spalte genommen. Wenn du weitere Jahres-Spalten einfügst, findet es automatisch die richtige Spalte.
2)+3) aktualisierter Code:
Sub OhneFunctionMenge()
Dim iColJahr As Integer
Dim iColMenge As Integer
Dim lRowF As Long
Dim lRowL As Long
Dim l As Long
Dim arrTeil
Dim N As Integer
Dim rFilter As Range
Dim jTMP
iColMenge = WorksheetFunction.Match("Gesamtmenge der Lieferungen", Range("A5").EntireRow, False) _
If Cells(4, iColMenge).Value = "" Then
'Solange nach dem Jahr fragen, bis ein gültiges eingegeben wurde
nochmal:
jTMP = InputBox("Bitte das Jahr eingeben")
If WorksheetFunction.CountIf(Range("A4").EntireRow, jTMP) = 0 Then GoTo nochmal
iColJahr = WorksheetFunction.Match(jTMP * 1, Range("A4").EntireRow, False)
Cells(4, iColMenge).Value = jTMP * 1
Else
iColJahr = WorksheetFunction.Match(Cells(4, iColMenge).Value, Range("A4").EntireRow, False)
End If
lRowF = 6
lRowL = Cells(Rows.Count, 2).End(xlUp).Row
If lRowL = lRowF Then
Cells(lRowF, iColMenge).Value = 0
arrTeil = Split(Cells(lRowF, iColJahr).Value, "-")
For N = 1 To UBound(arrTeil) Step 2
Cells(lRowF, iColMenge).Value = Cells(lRowF, iColMenge).Value + CSng(arrTeil(N))
Next N
Else
For Each rFilter In Range(Cells(lRowF, iColMenge), Cells(lRowL, iColMenge)).SpecialCells( _
xlCellTypeVisible)
'Bei "nix" einen Nullwert eintragen (vorherige Version: löschen)
Cells(rFilter.Row, iColMenge).Value = 0 '.clearcontents
arrTeil = Split(Cells(rFilter.Row, iColJahr).Value, "-")
For N = 1 To UBound(arrTeil) Step 2
Cells(rFilter.Row, iColMenge).Value = Cells(rFilter.Row, iColMenge).Value + CSng( _
arrTeil(N))
Next N
Next rFilter
End If
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Das Thema ...
23.04.2013 11:52:45
Schmitty
Oh man,
du bist ja schneller, als die Polizei erlaubt!!!
Vielen Dank für deine Mühen!!!
Gruß
Christian

Danke für die Rückmeldung! owT.
23.04.2013 11:53:44
Klaus
.

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige