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

Makro läuft nicht richtig

Makro läuft nicht richtig
14.02.2008 10:27:00
rene
Hallo,
möcht, wenn im Blatt "Eingabe" - B7, sich das Datum (per Liste, nicht Listenfeld) verändert wird, sollen die zugehörigen Daten aus Blatt "Alle_Wochen" geladen werden. Nun läuft das Makro nicht und wenn mal doch, dann hängt sich Excel auf.
Was ist falsch, hab ich was vergessen oder übersehen? Bitte um Hilfe!
LG rene

Private Sub Worksheet_Change(ByVal Target As Range)
'Verlasse den Code, wenn die geänderte Zelle nicht B7 ist:
If Target.Address  "$B$7" Then Exit Sub
'Private Sub CommandButton1_Click()
Dim objEingabe As Worksheet, objDaten As Worksheet
Dim lngR As Long, intC As Integer, lngEingabe As Long
Set objEingabe = Sheets("Eingabe")  'Eingabetabelle
Set objDaten = Sheets("Alle_Wochen")     'Datentabelle
lngR = Sheets("Alle_Wochen").Columns(1).Find(Sheets("Eingabe").Range("B7")).Row
'If ComboBox1.ListIndex  -1 Then
'   ComboBox1.ListIndex + 2 'Zeile im Blatt Alle_Wochen
For intC = 1 To 91
Select Case intC
'Im Folgenden kann die Prüfung auf Formel im Eingabebereich entfallen, wenn dort keine   _
_
Formeln sind!
Case 1 To 16 'Spalten 1 bis 16 (A bis P)
'Daten in B2:B22 eintragen
lngEingabe = 7 '1. Eingabezeile in Spalte B
If Not objEingabe.Cells(lngEingabe + intC - 1, 2).HasFormula Then
objEingabe.Cells(lngEingabe + intC - 1, 2).Value = _
objDaten.Cells(lngR, intC).Value
End If
Case 17 To 31 'Spalten 17 bis 31
'Daten in C3:C22 eintragen
lngEingabe = 8 '1. Eingabezeile in Spalte C
If Not objEingabe.Cells(lngEingabe + intC - 17, 3).HasFormula Then
objEingabe.Cells(lngEingabe + intC - 17, 3).Value = _
objDaten.Cells(lngR, intC).Value
End If
Case 32 To 46 'Spalten
lngEingabe = 8 '1. Eingabezeile in Spalte D
If Not objEingabe.Cells(lngEingabe + intC - 32, 4).HasFormula Then
objEingabe.Cells(lngEingabe + intC - 32, 4).Value = _
objDaten.Cells(lngR, intC).Value
End If
Case 47 To 61 'Spalten
lngEingabe = 8 '1. Eingabezeile in Spalte E
If Not objEingabe.Cells(lngEingabe + intC - 47, 5).HasFormula Then
objEingabe.Cells(lngEingabe + intC - 47, 5).Value = _
objDaten.Cells(lngR, intC).Value
End If
Case 62 To 76 'Spalten
lngEingabe = 8 '1. Eingabezeile in Spalte F
If Not objEingabe.Cells(lngEingabe + intC - 62, 6).HasFormula Then
objEingabe.Cells(lngEingabe + intC - 62, 6).Value = _
objDaten.Cells(lngR, intC).Value
End If
Case 77 To 91 'Spalten
lngEingabe = 8 '1. Eingabezeile in Spalte G
If Not objEingabe.Cells(lngEingabe + intC - 77, 7).HasFormula Then
objEingabe.Cells(lngEingabe + intC - 77, 7).Value = _
objDaten.Cells(lngR, intC).Value
End If
End Select
Next
'Unload Me
End Sub


Hoffe der Code ist lesbar!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro läuft nicht richtig
14.02.2008 10:39:00
Renee
Hi Rene,
Wenn du in einer Change_Ereignis_Prozedur wieder Zellen veränderst, wird die gleiche Prozedur wieder und wieder gestartet. Darum gehört da rein:

Application.EnableEvents = False
... Code der Daten verändert
Application.EnableEvents = True


Greetz Renée

AW: Makro läuft nicht richtig
14.02.2008 12:33:38
rene
Hallo Renée,
danke für den Denkansatz.
Hab jetzt allerdings folgende Meldung:
"Objektvariable oder With-Blockvariable nicht festgelegt"
markierte Zeile
lngR = Sheets("Alle_Wochen").Columns(1).Find(Sheets("Eingabe").Range("B7")).Row
fehlt hier noch was bei dem Code?
lg rene

Anzeige
AW: Makro läuft nicht richtig
14.02.2008 12:50:00
Wolli
Hallo rene, ohne dass ich den Code näher studiert habe: Wenn .find nichts findet, ist die Rückgabe kein Bereich sondern "Nothing" - und das erzeugt genau diesen Fehler. Wenn es also sein kann, dass nichts gefunden wird, muss das abgefangen werden:

Set rngTest = Sheets("Alle_Wochen").Columns(1).Find(Sheets("Eingabe").Range("B7"))
if not rngtest is nothing then
lngR = rngtest.Row
else
end if


Gruß, Wolli

AW: Makro läuft nicht richtig
14.02.2008 13:48:41
rene
Hallo Wolli,
jetzt funzt´s. Danke für den Code.
Meiner konnte auch nichts finden, da er Text sucht - im Datum. Daher ist dein Code ne große Hilfe gewesen, den Fehler zu finden. Kleine Ursache, große Wirkung!
Danke an Euch,
Lg rene
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige