Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1144to1148
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

@Renée, @ll ... Fehler im Code ???

@Renée, @ll ... Fehler im Code ?
Antoinette
Hallo,
liebenswerterweise hat mir Renée einen Code zur Verfügung gestellt, der es ermöglicht,
Daten per DropDown in einem TabBlatt anzuzeigen und auch zu verändern.
Funktioniert soweit auch alles bestens und wie gewünscht.
Allerdings nach Anpassung in einer neuen Arbeitsmappe, funktioniert er leider nicht mehr
und ich weiß absolut nicht warum.
Vielleicht sieht jemand von euch, einen von mir verursachten Fehler, denn wie bereits ge-
sagt...in der Beispieldatei https://www.herber.de/bbs/user/68747.xls
von Renée funktioniert
alles einwandfrei.
Hier mein angepasster Code:
Option Explicit
Public pubBolChanged As Boolean
Public pubLngRow As Long
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$2" Then
WriteValues
ReadValues Target
End If
If Not Intersect(Target, Range("I3:I4,U2:U4,AD2,AN2")) Is Nothing Then pubBolChanged = True
End Sub
Private Sub Worksheet_Deactivate()
WriteValues
End Sub

Sub ReadValues(rngTarget As Range)
pubLngRow = WorksheetFunction.Match(rngTarget, Tabelle19.Range("A:A"), 0)
Application.EnableEvents = False
Cells(3, 9) = Tabelle19.Cells(pubLngRow, 2) 'Eintritt
Cells(4, 9) = Tabelle19.Cells(pubLngRow, 3) 'Austritt
Cells(2, 21) = Tabelle19.Cells(pubLngRow, 4) 'Tel
Cells(3, 21) = Tabelle19.Cells(pubLngRow, 5) 'Zugehörigkeit
Cells(4, 21) = Tabelle19.Cells(pubLngRow, 6) 'Abteilung
Cells(2, 30) = Tabelle19.Cells(pubLngRow, 7) 'Resturlaub Vorjahr
Cells(2, 40) = Tabelle19.Cells(pubLngRow, 8) 'Anspruch lf Jahr
Application.EnableEvents = True
End Sub
Sub WriteValues()
If pubBolChanged Then
If vbOK = MsgBox("Werte für " & Tabelle19.Cells(pubLngRow, 1).Text & vbCrLf & _
"zurückschreiben ?", vbExclamation + vbOKCancel) Then
Tabelle19.Cells(pubLngRow, 2) = Cells(3, 9) 'Eintritt
Tabelle19.Cells(pubLngRow, 3) = Cells(4, 9) 'Austritt
Tabelle19.Cells(pubLngRow, 4) = Cells(2, 21) 'Tel
Tabelle19.Cells(pubLngRow, 5) = Cells(3, 21) 'Zugehörigkeit
Tabelle19.Cells(pubLngRow, 6) = Cells(4, 21) 'Abteilung
Tabelle19.Cells(pubLngRow, 7) = Cells(2, 30) 'Resturlaub Vorjahr
Tabelle19.Cells(pubLngRow, 8) = Cells(2, 40) 'Anspruch lf Jahr
End If
pubBolChanged = False
End If
End Sub
LG
Antoinette
AW: @Renée, @ll ... Fehler im Code ?
23.03.2010 19:57:20
Renee
Hallo Antoinette,
Die NamensListe ist ein definierter Name mit der Formel:
=BEREICH.VERSCHIEBEN(Tabelle2!$A$4;0;0;ANZAHL2(Tabelle2!$A:$A))
in meiner Tabelle.
Zelle B3 in Tabelle ist mit einer Gültigkeit Liste =NamensListe definiert. Diese beiden Sachen müssen definiert sein, bzw. ebenfalls deinen Gegebenheiten angepasst werden.
Zudem hat der Code noch einen Bug, bzgl. der Initialisierung der Variablen pubLngRow
Du musst noch folgenden Code anpassen und ins Klassenmodul DieseArbeitsmappe einfügen, dann Mappe sichern, schliessen und wiederöffnen. Vielleicht ist dann auch dein Fehler, den du leider nicht näher umschreibst, weg.
Private Sub Workbook_Open()
Sheet1.pubLngRow = WorksheetFunction.Match(Sheet1.Range("$B$3"), Sheet2.Range("A:A"), 0)
End Sub
GreetZ Renée
Anzeige
AW: @Renée, @ll ... Fehler im Code ?
23.03.2010 20:30:23
Antoinette
Hi Renée,
schön das du da bist :-)
Die NamensListe ist ein definierter Name mit der Formel:
=BEREICH.VERSCHIEBEN(Tabelle2!$A$4;0;0;ANZAHL2(Tabelle2!$A:$A))

Damit hatte ich auch kein Problem.
Füge ich jedoch den angepassten Code in DieseArbeitsmappe ein
Tabelle18.pubLngRow = WorksheetFunction.Match(Tabelle18.Range("$I$2"), Tabelle19.Range("A:A"), 0)
bekomme ich die Fehlermeldung: Fehler beim kompilieren
Methode oder Datenobjekt nicht gefunden
Bin ziemlich Ratlos, funktioniert doch deine Datei so wie ich es mir doch gewünscht habe.
LG
Antoinette
Anzeige
Dann ist der Code vlt. im falschen Blatt
23.03.2010 20:36:17
Renee
Hi Antoinette,
Die Fehlermeldung deutet darauf hin, dass mein/dein (langer) Code sich nicht in der Tabelle18 (das Blatt mit dem Dropdown und den Eingabezellen) befindet. Kann das sein ?
GreetZ Renée
AW: Dann ist der Code vlt. im falschen Blatt
23.03.2010 20:40:32
Antoinette
Hi Renée,
nein, er befindet sich schon im richtigen Blatt!
Blatt18(ursprünglich dein Blatt1)
LG
Antoinette
AW: @Renée, @ll ... Fehler im Code ?
23.03.2010 20:37:26
Antoinette
ich vergass,
angezeigt wird
.pubLngRow =
LG
Antoinette
Heisst den Blatt18 auch im VBE so?
23.03.2010 20:54:49
Renee
Hi Antoinette,
Noch ein Versuch:
Im VBE Navigationsfenster siehst du die Tabellenblätter in dieser Notation:
Tabelle18 (Blatt18)
Der vordere Name ist der sog. Codename für das Blatt, der hintere der Name, wie das Blatt in den Tabellenreitern benannt ist.
Meine Code-Notation bezieht sich immer auf den Codenamen, also die Bezeichnung die nicht eingeklammert ist. Dort muss sich der Code mit den Public Definitionen befinden.
GreetZ Renée
Anzeige
AW: Heisst den Blatt18 auch im VBE so?
23.03.2010 21:18:03
Antoinette
Hi
danke für deine Geduld.
Ich denke, er befindet sich schon im richtigen Blatt.
Userbild
Ohne dein Code
Private Sub Workbook_Open()
Tabelle18.pubLngRow = WorksheetFunction.Match(Tabelle18.Range("$I$2"), Tabelle19.Range(" _
A:A"), 0)
End Sub
funktioniert er in soweit, das er die Daten, die einmalig manuell in Blatt19 eingetragen worden sind,
über die DropDown Liste im Blatt18 auch anzeigt und in den entsprechenden Zellen einträgt. Eine
Anderung sprich Rückschreibung in Blatt19 funktioniert jedoch nicht.
Da ich schon ein Workbook_Open() Ereignis habe, ist es natürlich möglich, das ich den Code falsch
platziert habe. Wo müsste er den dort stehen?
Private Sub Workbook_Open()
Dim FaktorV As Double, FaktorH As Double
Dim FZoom As Long
With ThisWorkbook.ActiveSheet
If .Name = "Start" Or .Name = "Master" Then
FZoom = IIf(.Name = "Start", LZoomStart, LZoomMaster)
FaktorV = FZoom / LVertikal * ScreenResolution(1)
FaktorH = FZoom / LHorizontale * ScreenResolution(0)
ActiveWindow.Zoom = Application.WorksheetFunction.Min(FaktorV, FaktorH)
End If
End With
Dim ws As Worksheet
For Each ws In Me.Worksheets
If ws.Name  "Makrohinweis" Then
ws.Visible = xlSheetVisible
End If
Next 'ws
Sheets("Makrohinweis").Visible = xlSheetVeryHidden
Dim objOLE As OLEObject
Sheets("Seite1").Shapes("Hallo_").Visible = True
For Each objOLE In Sheets("Start").OLEObjects
If objOLE.Name  "cmdEnter" Then
objOLE.Visible = False
Else
objOLE.Visible = True
objOLE.Object.Caption = "Anmelden"
End If
Next
LogOff
ThisWorkbook.Worksheets("Seite1").ScrollArea = "$A$1:$L$35"
Zeitmakro
Laufschrift_Start
End Sub
LG
Antoinette
Anzeige
Einfach nur die Codezeile, ...
23.03.2010 21:27:46
Renee
in deinem Workbook_Open nach den DIM Definitonen platzieren, Antoinette
Es darf nur 1 Workbook_Open in einer Arbeitsmappe geben!
Dann sollte es funktionieren.
GreetZ Renée
AW: Einfach nur die Codezeile, ...
23.03.2010 21:42:43
Antoinette
Hallo Renée...
...leider immer die gleiche Fehlermeldung bei
.pubLngRow =

Wäre ja auch zu schön gewesen :-(
Trotzdem, lieben Dank für deine geduldige Unterstützung,
vielleicht bekomme ich es ja noch per Zufall hin.
LG
Antoinette
Intellisense oder Mappe...
23.03.2010 22:00:44
Renee
Hi Antoinette,
Ferndiagnose grenzt schon fast an Wahrsagen ;-)
Wenn du im WorkBook_Open Codeteil eine neue Zeile mit
Tabelle18.
beginnst, dann müsste nach dem . ein Intellisense-Dropdown aufgehen. In diesem müsstest du die Variable pubLngRow auswählen können, sonst ist sie nicht dort definiert!
Ein Notausgang wäre mir eine abgespeckte Mappe (nur die beiden betr. Blätter behalten und die Datensätze in 19 löschen/anonymisieren) per Mail zu schicken an sulaweyo (at) hotmail.com.
GreetZ Renée
Anzeige
AW: Intellisense oder Mappe...
23.03.2010 22:19:53
Antoinette
Hallo Renée
lieb von dir, das du nicht so schnell Aufgibst bzw. die Geduld verlierst :-)
Komme gerne auf dein Angebot zurück und melde mich dann bei dir.
Nochmals Danke und Gute Nacht
LG
Antoinette
...doch noch eine letzte Frage
23.03.2010 22:07:45
Antoinette
...kann es vielleicht möglich sein, das die hinterlegte Formel im NamensManager "NamensListe"
im Code benannt werden muss?
Ich habe nähmlich dort noch 5 weitere Funktionen.
Gibt es eventuell da einen Konflikt?
LG
Antoinette

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige