Supportnet / Forum / Tabellenkalkulation
Programm-Schleife: wenn-dann -> einfügen in VBA geschrieben
Frage
Hallo da draußen,
mein Problem ist folgendes, ich will in Excel ein Makro schreiben / bearbeiten und mir fehlen leider ein paar Programmierkenntnisse.
habe mich zwar schon ein wenig in VBA eingearbeitet, nur fehlt mir die Zeit das alles bis "morgen" zu verinnerlichen.
Ich möchte mit dem Makro in der Spalte K einen Zustand kontrollieren und wenn der zutrifft, dann in Spalte L etwas hinein schreiben.
dabei soll jede Zeile in Spalte K überprüft werden.
bisher ist das MAKRO soweit vorhanden:
Sub Spalte_L()
´
´ Spalte_L Makro
´
´ Tastenkombination: Strg+Umschalt+L
´
Dim rngZelle As Range
For Each rngZelle In Column(K)
´soll für jede Zelle in Spalte "K" gelten
If rngZelle = 0 Then
´wenn die aktuelle Zelle = 0
If rngZelle - 1 = 1 Then
´und die Zelle darüber = 1
Range("U3:U14").Select
Activate Selection.Copy
Range(rngZelle - 1 + 1).Select
ActiveSheet.Paste
´ soll eine bestimmte Zahlenfolge dann in die Spalte kopieren und den vorhanden Bereich überschreiben
End If
End If
Next rngZelle
´ und weiter mit der nächsten Zelle
End Sub
Wenn ich das Makro starten will kommt:
Fehler beim Kompilliern "Sub oder Function" nicht definert.
habe keinen Plan wie ich das machen soll, muß da echt bei Null anfangen, nur fehlt mir da a bissl die Zeit.
Für Hilfe wäre ich echt dankbar...
MfG Tjalf
Antwort 1 von Saarbauer
Hallo,
ohne im Detail eingestigen zu sein
muß
For Each rngZelle In Column("K")
heissen.
Column(K) ist ein Funktionsaufruf mit Übergabewert K
Gruß
Helmut
ohne im Detail eingestigen zu sein
Zitat:
For Each rngZelle In Column(K)
For Each rngZelle In Column(K)
muß
For Each rngZelle In Column("K")
heissen.
Column(K) ist ein Funktionsaufruf mit Übergabewert K
Gruß
Helmut
Antwort 2 von Tjalf
Jo Stimmt,
aber das Problem kommt immer noch :
Fehler beim Kompilliern! Sub oder Function nicht definert.
ich hab keine Ahnung wie ich den Sub definieren soll, oder welche Function da hin passen könnte, da mir da das Hintergrundwissen fehlt.
Danke trotzdem ^^
aber das Problem kommt immer noch :
Fehler beim Kompilliern! Sub oder Function nicht definert.
ich hab keine Ahnung wie ich den Sub definieren soll, oder welche Function da hin passen könnte, da mir da das Hintergrundwissen fehlt.
Danke trotzdem ^^
Antwort 3 von Saarbauer
Hallo,
Was machst du eigentlich hier, es fehlt irgendwie die 2. Angabe (Spalte) und rngZelle - 1 + 1 = rngZelle
Gruß
Helmut
Zitat:
Range(rngZelle - 1 + 1).Select
Range(rngZelle - 1 + 1).Select
Was machst du eigentlich hier, es fehlt irgendwie die 2. Angabe (Spalte) und rngZelle - 1 + 1 = rngZelle
Gruß
Helmut
Antwort 4 von Event
Hallo
Nachfolgendes macht so etwas (ähnliches) wie von Dir - leider nicht exakt - beschrieben:
Option Explicit
Sub Spalte_L()
Dim rngZelle As Range, z$, s%, uz As Range
Range("k2:k65535").Select ´damit in K1 eine "1" stehen kann
For Each rngZelle In Selection ´soll für jede Zelle in Spalte "K" gelten
If rngZelle.Value = 0 Then ´wenn die aktuelle Zelle = 0
If rngZelle.Offset(-1, 0).Value = 1 Then ´und die Zelle darüber = 1
z = rngZelle.Offset(0, 1).Address(RowAbsolute:=True)
Range("U3:U14").Select
s = Val(Mid(z, 4, Len(z) - 3))
For Each uz In Selection
Range(Left(z, 3) & CStr(s)).Value = uz.Value
´soll eine bestimmte Zahlenfolge dann in die Spalte ´kopieren und den vorhanden Bereich überschreiben
s = s + 1
Next
End If
End If
Next rngZelle
´und weiter mit der nächsten Zelle
End Sub
Gruß
Nachfolgendes macht so etwas (ähnliches) wie von Dir - leider nicht exakt - beschrieben:
Option Explicit
Sub Spalte_L()
Dim rngZelle As Range, z$, s%, uz As Range
Range("k2:k65535").Select ´damit in K1 eine "1" stehen kann
For Each rngZelle In Selection ´soll für jede Zelle in Spalte "K" gelten
If rngZelle.Value = 0 Then ´wenn die aktuelle Zelle = 0
If rngZelle.Offset(-1, 0).Value = 1 Then ´und die Zelle darüber = 1
z = rngZelle.Offset(0, 1).Address(RowAbsolute:=True)
Range("U3:U14").Select
s = Val(Mid(z, 4, Len(z) - 3))
For Each uz In Selection
Range(Left(z, 3) & CStr(s)).Value = uz.Value
´soll eine bestimmte Zahlenfolge dann in die Spalte ´kopieren und den vorhanden Bereich überschreiben
s = s + 1
Next
End If
End If
Next rngZelle
´und weiter mit der nächsten Zelle
End Sub
Gruß
Antwort 5 von tjalf
@ Helmut:
mit " Range(rngZelle - 1 + 1).Select "
meinte ich, das das Makro in die Nachbarspalte gehen soll und eine Zeile nach oben und dann dort die kopierten Zellen einfügen soll.
war nicht ganz glücklich ausgedrückt, i know ...
@ Event
Danke für Deine Mühe, nur habe ich da nicht ganz durchblicken können, da mir noch der tiefere Einblick in VBA fehlt,
woran ich aber arbeite ^^
(der Ansatz ging ja noch und die If-Then-Funktion aber als es dann ans kopieren+einfügen ging war´s zu Ende)
habe noch in einem anderen Forum angefragt und habe dort einen Code bekommen, den ich A verstehe und B der nach leichter Modifikation auch Prima funktioniert.
---
Sub Spalte_L()
´
´ Spalte_L Makro
´
´ Tastenkombination: Strg+Umschalt+L
´
Dim wks As Worksheet
Dim rngZelle As Range
Dim lngZeile&
Dim lngLetzteZeile&
Dim lngSpalteK&
Dim lngSpalteL&
lngSpalteK = 11
lngSpalteL = 12
Set wks = Worksheets("Tabelle 1")
lngLetzteZeile = wks.Cells(Rows.Count,
lngSpalteK).End(xlUp).Row
For lngZeile = 1 To lngLetzteZeile
´soll für jede Zelle In Spalte "K" gelten
If wks.Cells(lngZeile, lngSpalteK).Value = 0 Then
If wks.Cells(lngZeile - 1, lngSpalteK).Value = 1 Then
wks.Range("U3:U14").Copy Destination:=wks.Cells(lngZeile - 1, lngSpalteL)
End If
End If
Next
End Sub
---
werde versuchen, mich beim nächsten Problem besser verständlich auszudrücken, und mich dann mehr an die VBA-Sprache zu halten, wenn ich sie bis dahin verstanden hab ^^
Grüße
mit " Range(rngZelle - 1 + 1).Select "
meinte ich, das das Makro in die Nachbarspalte gehen soll und eine Zeile nach oben und dann dort die kopierten Zellen einfügen soll.
war nicht ganz glücklich ausgedrückt, i know ...
@ Event
Danke für Deine Mühe, nur habe ich da nicht ganz durchblicken können, da mir noch der tiefere Einblick in VBA fehlt,
woran ich aber arbeite ^^
(der Ansatz ging ja noch und die If-Then-Funktion aber als es dann ans kopieren+einfügen ging war´s zu Ende)
habe noch in einem anderen Forum angefragt und habe dort einen Code bekommen, den ich A verstehe und B der nach leichter Modifikation auch Prima funktioniert.
---
Sub Spalte_L()
´
´ Spalte_L Makro
´
´ Tastenkombination: Strg+Umschalt+L
´
Dim wks As Worksheet
Dim rngZelle As Range
Dim lngZeile&
Dim lngLetzteZeile&
Dim lngSpalteK&
Dim lngSpalteL&
lngSpalteK = 11
lngSpalteL = 12
Set wks = Worksheets("Tabelle 1")
lngLetzteZeile = wks.Cells(Rows.Count,
lngSpalteK).End(xlUp).Row
For lngZeile = 1 To lngLetzteZeile
´soll für jede Zelle In Spalte "K" gelten
If wks.Cells(lngZeile, lngSpalteK).Value = 0 Then
If wks.Cells(lngZeile - 1, lngSpalteK).Value = 1 Then
wks.Range("U3:U14").Copy Destination:=wks.Cells(lngZeile - 1, lngSpalteL)
End If
End If
Next
End Sub
---
werde versuchen, mich beim nächsten Problem besser verständlich auszudrücken, und mich dann mehr an die VBA-Sprache zu halten, wenn ich sie bis dahin verstanden hab ^^
Grüße