Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1252to1256
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

@Sepp und alle VBA-Experten

@Sepp und alle VBA-Experten
Fritz_W
Hallo Forumsbesucher,
mit dem nachfolgenden Code, den ich von Sepp Ehrensberger vor wenigen Tagen erhalten habe,
werden die Zelllinhalte des Zellbereichs D3:D18 der Tabelle1 (als unformatierter Wert) in die Tabelle2 eingefügt, und zwar in die erste leere Spalte, ausgehend von der Zeile, in der in Spalte A (Tabelle2) die Zahl steht, die auch in Zelle I1 der Tabelle1 enthalten ist.
Sub fritz()
Dim vntRet As Variant, vntValues As Variant
Dim rngFree As Range
With Sheets("Tabelle2")
If Sheets("Tabelle1").Range("I1") "" And Sheets("Tabelle1").Range("B2") = "x" Then
vntRet = Application.Match(Sheets("Tabelle1").Range("I1"), .Columns(1), 0)
If IsNumeric(vntRet) Then
Set rngFree = FirstEmptyCell(.Rows(vntRet))
If Not rngFree Is Nothing Then
vntValues = Sheets("Tabelle1").Range("D3:D18")
rngFree.Resize(UBound(vntValues, 1), 1) = vntValues
End If
End If
End If
End With
End Sub
Private Function FirstEmptyCell(Target As Range, Optional Reverse As Boolean = False) As Range
Dim vntRet As Variant, strRef As String
With Target
strRef = "'" & .Parent.Name & "'!" & .Address
vntRet = Evaluate(IIf(Reverse, "MAX", "MIN") & "(IF(" & strRef & "="""",ROW(" & strRef & _
")+COLUMN(" & strRef & ")*10^-6))")
If IsError(vntRet) Or vntRet = 0 Then Exit Function
Set FirstEmptyCell = .Cells(Clng(Split(vntRet, ",")(0)) - .Rows(1).Row + 1, Clng(Split(vntRet,  _
_
",")(1)) - .Columns(1).Column + 1)
End With
End Function
Jetzt habe ich festgestellt, dass folgende - für mich nicht nachvollziehbare - Besonderheit auftritt:
Beim 9. Kopiervorgang wird nicht in die Spalte J (Spalte 10) kopiert, sondern in die Spalte A, dabei wird natürlich die jeweilige "Zahl" überschrieben. Nachdem ich den Eintrag der Spalte A in die Spalte J kopiert habe und die überschriebene Zahl wieder eingegeben habe, wird der Kopiervorgang solange wieder korrekt fortgesetzt, bis in die Spalte T (Spalte 20) kopiert werden sollte. Statt in die Spalte T wird nunmehr in die Spalte B kopiert.
Mir ist aufgefallen, dass das offensichtlich jede 10. Spalte betrifft, im weiteren wird somit anstatt in die Spalte AD (Spalte 30), dann in die Spalte C kopiert usw.
Nun hoffe ich auf eure kompetente Hilfe bei der Anpassung des Codes und bedanke mich dafür bereits im Voraus.
Viele Grüße
Fritz
Beispieldatei ist beigefügt:
https://www.herber.de/bbs/user/79147.xls

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

Betreff
Benutzer
Anzeige
AW: @Sepp und alle VBA-Experten
29.02.2012 22:44:15
Josef

Hallo Fritz,
da hatte ich eine Make in die Funktion mit eingebaut;-)))
Ersetze sie durch diese.
Private Function FirstEmptyCell(Target As Range, Optional Reverse As Boolean = False) As Range
  Dim vntRet As Variant, strRef As String
  
  With Target
    strRef = "'" & .Parent.Name & "'!" & .Address
    vntRet = Evaluate(IIf(Reverse, "MAX", "MIN") & "(IF(" & strRef & "="""",ROW(" & strRef & _
      ")+COLUMN(" & strRef & ")*10^-6))")
    If IsError(vntRet) Or vntRet = 0 Then Exit Function
    Set FirstEmptyCell = .Cells(Clng(Split(vntRet, ",")(0)) - .Rows(1).Row + 1, _
      CDbl("0," & Split(vntRet, ",")(1)) / 10 ^ -6 - .Columns(1).Column + 1)
  End With
End Function



« Gruß Sepp »

Anzeige
AW: @Sepp und alle VBA-Experten
29.02.2012 23:07:26
Fritz_W
Hallo Sepp,
ganz herzlichen Dank, ich hatte schon Bedenken, dass ich selbst irgendeinen Mist gebaut habe.
Ich hab mit etwas unklaren und zu unklar formulierten Anliegen möglicherweise in den letzten Tagen hier einige Helfer etwas genervt und hatte etwas Bammel nun schon wieder 'vorstellig' zu werden.
Ich hab auch noch eine Frage offen, auf die bislang niemand reagiert hat.
Betrifft das gleiche 'Projekt'.
Es würde mich freuen, wenn Du Dir das mindestens mal anschauen würdest.
Gib mir bitte Bescheid falls mein Anliegen - trotz der Beispieldatei - nicht nachvollziehbar ist.
Muss aber nicht mehr heute sein.
Viele Grüße
Fritz
Anzeige
AW: @Sepp
03.03.2012 10:41:13
Fritz_W
Hallo Sepp,
als ich eben meinen letzten Beitrag an Dich nochmals 'in aller Ruhe' durchgelesen habe, bin ich etwas erschrocken, da ich Zweifel habe, dass Du meine Formulierung missverstanden haben könntest.
Hoffentlich hast Du meine Worte 'dass ich selbst irgendeinen Mist gebaut habe' im Umkehrschluss nicht verstanden, dass Du nun 'Mist gebaut' hast. Ich hätte besser formuliert 'dass ich schon wieder Mist gebaut habe'. Ich war euphorisch darüber, dass der Fehler, den ich selbst verzweifelt und letztlich vergeblich suchte, endlich behoben war.
Du hast hier schon so oft mit so großartigen Lösungen geholfen, das will ich hier nur nochmal wiederholen.
Ich hab mich immer gefreut, von Dir so uneigennützung Unterstützung zu bekommen und war dafür sehr dankbar.
Bitte verzeih mir, solltest Du mich missverstanden haben.
Viele Grüße
Fritz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige