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

Code funktioniert nur einmal!

Code funktioniert nur einmal!
07.06.2007 13:19:13
tursiops
Hallo!
Ich habe folgenden Code:

Private Sub CommandButton3_Click()
Dim suchid As Long
Dim b As Integer
Dim neuer_wert As String
suchid = Sheets("Std").Range("C2")
ScreenUpdating = False
For j = 1 To 167 '167 = Spalte HM
For i = 1 To 100
If Sheets("DB K1").Range(j & i) = suchid Then
Sheets("1!").Range(j & i) = neuer_wert
Sheets("DB K1").Range(j & i) = neuer_wert
End If
Next i
Next j
ScreenUpdating = True
End Sub


Leider funktionierte er nur ein Mal. Nun bekommen ich immer Laufzeitfehler auf folgenden Zeile:
If Sheets("DB K1").Range(j & i) = suchid Then
Weiß jemand, woran das liegen könnte?
Gruß Frank

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code funktioniert nur einmal!
07.06.2007 13:27:29
Tino
Hallo,
ich denke mal Range ist hier nicht geeignet.
versuche mal mit
cells(i , j)
gruss
Tino

AW: Code funktioniert nur einmal!
07.06.2007 13:37:00
tursiops
Hallo!
Der Tipp war gut. Zumindest bin ich nun eine Codezeile weiter. Nun wird allerdings die nächste:
(Sheets("1!").Range(j & i) = neuer_wert)
als Laufzeitfehler angezeigt.
Gruß Frank

AW: Code funktioniert nur einmal!
07.06.2007 13:38:16
tursiops
Hallo!
Der Tipp war gut. Zumindest bin ich nun eine Codezeile weiter. Nun wird allerdings die nächste:
(Sheets("1!").Cells(j & i) = neuer_wert)
als Laufzeitfehler angezeigt.
Gruß Frank

AW: Code funktioniert nur einmal!
07.06.2007 13:47:00
Tino
hallo,
bei Sheets("1!") muss der komplette Name des Tabellenblattes stehen
Bsp. Sheets("Tabelle1").cells....
oder die psition in der Mappe
Bsp. Sheets(1).cells... oder Shetts(2).cells...
Gruss
tino

Anzeige
AW: Code funktioniert nur einmal!
07.06.2007 14:03:00
Tino
Hallo,
so würde ich dies machen.
Bei Sheets("1!"). muss noch der richtige Name eingetragen werden!

Private Sub CommandButton3_Click()
Dim suchid As Long
Dim b As Integer
Dim neuer_wert As String
Dim Bereich As Range
suchid = Sheets("Std").Range("C2")
For Each Bereich In Sheets("DB K1").Range("A1:HM100")
If Bereich = suchid Then
Sheets("1!").Range(Bereich.Address) = neuer_wert
Sheets("DB K1").Range(Bereich.Address) = neuer_wert
End If
Next Bereich
End Sub


AW: Code funktioniert nur einmal!
07.06.2007 14:25:00
tursiops
Hallo!
Ich habe die Zeile:
Sheets("1!").Range(Bereich.Address) = neuer_wert geändert in
Sheets("1").Range(Bereich.Address) = neuer_wert
und bekomme nun keine Fehlermeldung mehr. Leider aktualisiert der Code den Datensatz trotzdem nicht. Die ID-Nummer des Datensatzes
(=Suchkriterium - suchid = Sheets("Std").Range("C2")
wird aus den Blättern "1" und "DB K1" gelöscht
Gruß Frank

Anzeige
AW: Code funktioniert nur einmal!
07.06.2007 14:32:00
Tino
Hallo,
denke mal du hast dem
neuer_wert
nichts gegeben dass eingetragen werden soll!
Gruss
tino

AW: Code funktioniert nur einmal!
07.06.2007 14:43:00
tursiops
Hallo!
Im Blatt "1" in Zeile 2 (A-HM) stehen Werte aus der Datenmaske ("StD") in genau derselben Anordnung wie in der Datenbank. Dies sind Formelergebnisse (keine Formeln). Diese Werte (Zeile) sollen über den bereits in der Datenbank vorhandenen Daten geschrieben werden (diese ersetzen).
Kannst Du mir nen Tipp geben, wie ich den Code umschreiben muss?
Gruß Frank

AW: Code funktioniert nur einmal!
07.06.2007 15:10:00
tursiops
Hat irgendjemand eine Idee?

AW: Code funktioniert nur einmal!
07.06.2007 15:37:00
Tino
Hallo,
also bin auch kein so schnelldenker.
Was soll nun gesucht werden, und was soll ersetzt werden?
Wie in deinem ersten Beispielcode, soll nach dem wert aus "StD - C2" gesucht werden.
und was genau soll nun rein, wenn dieser wert gefunden wird?
Gruss
Tino

Anzeige
AW: Code funktioniert nur einmal!
07.06.2007 15:39:37
Tino
Hallo,
vieleicht habe ich es so richtig verstanden?

Private Sub CommandButton3_Click()
Dim suchid As Long
Dim b As Integer
Dim neuer_wert As String
Dim Bereich As Range, DatenBereich As Range
suchid = Sheets("Std").Range("C2")
For Each Bereich In Sheets("DB K1").Range("A1:HM100")
If Bereich = suchid Then
neuer_wert = Sheets("1").Range(Bereich.Address)
Sheets("DB K1").Range(Bereich.Address) = neuer_wert
End If
Next Bereich
End Sub


Gruss
Tino

AW: Code funktioniert nur einmal!
07.06.2007 16:00:00
tursiops
Hallo!
Leider nicht ganz :-(...
Die Datenreihe in der Datenbank bleibt weiter unverändert, bis auf, dass die ID in Spalte A, die gleichzeitig das Suchkriterium ist, gelöscht wird.
Gruß Frank

Anzeige
AW: Code funktioniert nur einmal!
07.06.2007 16:10:00
tursiops
Hallo nochmal!
Also! In "StD!C2" steht nur das Suchkriterium, also die ID des Kunden zu der der Datensatz gehört.
Die ID steht aber sonst nochmal in "1!A2". In "1!2:2" werden Formelerbegnisse aus der Datenmaske hinterlegt. Immer in dieser festen Zeile! Diese Zeile soll nun über den bestehenden Datensatz mit der gleichen ID im Blatt "DB_K1" geschrieben werden.
Das Makro soll also den Datensatz mit der ID aus "StD!C2" oder "1!A2" finden und mit der Zeile "1!2:2" überschreiben.
Gruß Frank

AW: Code funktioniert nur einmal!
07.06.2007 16:52:16
Tino
Hallo,
vielleicht könntest du die Mappe mal hoch laden,
weil ist es für mich zumindest schwer verständlich.
Gruss
Tino

Anzeige
AW: Code funktioniert nur einmal!
07.06.2007 17:49:54
Tino
Hallo,
na sollte ich es jetzt richtig verstanden haben, müsste es so gehen.
Also in (DB K1!A1:AH100) wird nach beiden Bedingungen (1!A2 und StD!C2) gesucht bei Übereinstimmung
wird die Zeile in (DB K1!) mit der Zeile (1!A2:AH100) überschrieben.

Private Sub CommandButton3_Click()
Dim suchid1 As String, suchid2 As String
Dim b As Integer
Dim neuer_wert As String, SuchAddresse As String
Dim SuchDaten As Byte
Dim Bereich As Range, DatenBereich As Range
suchid1 = Sheets("StD").Range("C2") '1. Suchwert
suchid2 = Sheets("1").Range("A2") '2. Suchwert
For Each Bereich In Sheets("DB K1").Range("A1:AH100")
If Bereich = suchid1 Or Bereich = suchid2 Then
SuchAddresse = Range(Cells(Bereich.Row, 1).Address & ":" & Cells(Bereich.Row, 100). _
Address).Address
For Each DatenBereich In Sheets("1").Range(SuchAddresse)
Sheets("DB K1").Range(DatenBereich.Address) = _
Sheets("1").Cells(2, DatenBereich.Column) 'Bereich mit 1!A2:AH2 Überschreiben
Next DatenBereich
End If
Next BereichEnd Sub


Gruss
Tino

Anzeige
AW: Code funktioniert nur einmal!
07.06.2007 22:50:04
Frank
Hallo!
Klasse! Es funktioniert!!! Auch wenn
suchid1 = Sheets("StD").Range("C2") '1. Suchwert
suchid2 = Sheets("1").Range("A2") '2. Suchwert
dies die selben Werte sind, einmal der aus dem Kombinationfeld in der Datenmaske und dann die rauskopierten Formalergebnisse Aus "StD". Super super super!
Vielen Dank
Schöne Grüße Frank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige