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

Fortschrittsanzeig hat Fehler!

Fortschrittsanzeig hat Fehler!
27.07.2005 14:08:12
Sammy
Hallo Zusammen,
dank der freundlichen Unterstützung dieses Forums, hab ich ein Fortschrittsanzeige. Leider hat sie einen Fehler...
Ich rufe Sie auf mit
If CheckBox9 = True Then
SetzeFortschritt Range("C" & CInt(Me.Tag)), 1
End If
Ich hab 10 Boxen die ich antickern kann. Jede wird so wie oben Aufgerufen. Da wo oben die eins ist, steht bei den anderen natürlich 2,3,4 usw,
Problem:
Wenn ich Box 1 und 2 und 3 anticker, dann hab ich knapp ein drittel der Anzeige voll. Ticker ich aber wie oben und zusätzlich noch die 9. Box, dann will ich eigentlich knapp über ein drittel haben und nicht fast voll, weil ja bei der neunten Box die 9 hinten steht.
Habt ihr Ratschläge wie ich das umgehen kann.
Viele Grüße
Sammy

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fortschrittsanzeig hat Fehler!
27.07.2005 16:42:09
Leo
Hi,
löse das nicht über den in der Tag-Eigenschaft eingetragenen Wert, sondern über die Anzahl der ausgewählten Checkboxen.
mfg Leo
AW: Fortschrittsanzeig hat Fehler!
27.07.2005 17:29:04
Sammy
Hi Leo,
du meinst erst die Abfrage...
Dim zähler As Integer
Dim o As Integer
zähler = 0
For o = 1 To 10
If Me.Controls("Checkbox" & o) = "TRUE" Then zähler = zähler + 1
Next o
~f~
und dann
~f~
SetzeFortschritt Range("d" & CInt(Me.Tag)), zähler
?
Ich werds gleich Morgen in der Früh ausprobieren, muß leider weg!
Danke für den Tip
Viele Grüße
Sammy
AW: Fortschrittsanzeig hat Fehler!
28.07.2005 08:08:07
Hajo_Zi
Hallo Sammy,
ich lese da so das Du testen mußt, warum ist die Frage dann offen. Das testen kann Dir keiner abnehmen und solange Du nicht getestet hat braucht sich keiner einen Kopf machen um die Lösung.
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
Anzeige
aktzeptiert die Variable nicht!
28.07.2005 09:32:04
Sammy
Guten Morgen Leo, Guten Morgen Hajo,
wie erquickend von dir aus den träumereien Gerissen zu werden, Hajo! Aber wie immer hast du recht, ich mach ein Strich mehr auf meiner Dummkopfliste, ok?
Aber wieder zu meinem Problem. Hab es auprobiert, funzt nicht. Er sagt immer:
Argumenttyp ByRef unverträglich.
Ich werde mal schauen ob ich finde was das bedeutet...
Habt Ihr eine Erklärung für mich?
Viele Grüße
Sammy
True funktioniert auch nicht!
28.07.2005 10:20:46
Sammy
Hi Leo, Hajo!
Hab leider keine Lösung gefunden. Aber hab dafür was anderes festgestellt, bei dem True kommen keine Anführungstriche hin...
Was mach ich denn jetzt?
Viele Grüße
sammy
Anzeige
AW: True funktioniert auch nicht!
28.07.2005 10:28:32
Hajo_Zi
Hallo Sammy,
mir war Dein Beitrag nur aufgefallen als ich mir mal die offenen Beiträge angesehen habe darum mein Kommentar. Ich hatte Deinen ersten Beitrag auch schon vorher gelesen aber mein Eindruck war, bei Fortschrittanzeigen muß man das an der Datei testen. Solche Sachen sind nicht ohne. Eine Datei habe ich in diesem Beitrag noch nicht gefunden.
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
Anzeige
AW: True funktioniert auch nicht!
28.07.2005 10:43:31
Sammy
Hallo Hajo,
ich stells ja liebend gerne rein wenn es euch hilft mir zu helfen!
In der Userform Eingabefenster ganz oben habe ich das ausprobiert, stellen sind markiert.
Den Code für die Fortschrittsanzeige, findest du ganz unten im selben Blatt.
https://www.herber.de/bbs/user/25076.xls
Danke für deine Teilnahme.
Viele Grüße
Sammy
AW: True funktioniert auch nicht!
28.07.2005 11:06:53
Hajo_Zi
Hallo Sammy,
kannst Du mir mal Dein geplantes System der Fortschrittsanzeige beschreiben?
Ich bin der Auffasung 50% des Codes konnte man entfallen lassen, wenn mit Schleifen gearbeitet wird und die Tag Eigenschaft zum Ei´nsatz kommt.

While .Cells(z, 1) ""
z = z + 1
Wend

wird damit die erste leere Zelle festgestellt oder die erste Zelle nach der letzten gefüllten Zelle?
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
Anzeige
Liebend gerne!
28.07.2005 11:33:14
Sammy
Hallo Hajo,
Meinst du mit hälfte weg nur den Code für die Fortschrittsanzeige oder auch wie ich die Zellen zwischenspeicher?
Also zur Fortschrittsanzeige:
Bei jedem Partner gibt es die Möglichkeit 10 URLs zu verwalten. Mit der Fortschrittsanzeige will ich ausdrücken 1.wieviele URLs bei dem Partner dieses Produkt schon haben. 2. Wenn der Streifen nur sehr kurz ist, dann kann man gleich erkennen das der Partner nur sehr wenig URLs hat.
Wenn du mit der hälfte wegglassen das setzen der Fortschrittsanzeige meinst: wenn das jetzt so klappen würde wie ich es versuche (dann ja auch der Fehler beseitigt wäre), dann bräuchte ich nur sieben Schleifen für die Abfrage der sieben Produkte und sieben Zeilen für das setzen, oder?
Mit dieser Schleife will ich das er die erste leere Zelle in der Spalte sucht um den neuen Partner anzulegen. Hätte ich das besser machen können?
Ich musste gar die hälfte von meinem Code wegglassen weil die Datei zum hochladen zu groß war, ich hab nämlich noch eine Userform eingebaut die ziemlich den selben Code enthält, die dient mir wenn ich einen Partner bearbeiten will. Er läd mir dann die Daten aus dem Datenblatt in die Userform... Die selbe konnte ich nicht nehmen weil er mir dann die Daten beim speichern nicht wieder in die selbe Zeile abgelegt hat sondern wieder in die erste freie. Ich hatte keinen anderen Weg gefunden und wusste mir nur so zu hlefen... bin ja nur Anfänger.
Wenn du verbesserungsvorschläge hast, bin ich dir für jeden Rat dankbar.
Viel Grüße
sammy
Anzeige
AW: Liebend gerne!
28.07.2005 11:41:43
Hajo_Zi
Hallo Sammy,
zu 1
ja der gesamte Code. Siehe Dir mal dieses Beispiel von meiner HP an wie dort die Daten ausgelesen und zurückgeschrieben werden.
Beispieldatei
zu 2
"2. Wenn der Streifen nur sehr kurz ist, dann kann man gleich erkennen das der Partner nur sehr wenig URLs hat." welcher Streifen?
zu 3
"Mit dieser Schleife will ich das er die erste leere Zelle in der Spalte sucht um den neuen Partner anzulegen. Hätte ich das besser machen können?"
Das bedeutet das wenn A7:A13; A15 belegt sind wird der Datensatz in A114 geschrieben
Arbeite mal meinen Vorschlag 1 ein dann sehen wir weiter.
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
Anzeige
Russisch
28.07.2005 12:38:43
Sammy
Hallo Hajo!
puuhhh, mir kommts vor als ob ich auf einmal einen russischen Computer hät!
Egal, ich will ja lernen und versuch das auf mein Projekt umzuwandeln.
Wärst du vielleicht doch so lieb und gibst mir eine kleine Hilfestellung. Ich hab mich mit sowas noch nie beschäftigt und es wäre Hilfreich zu wissen wie die Vorgehensweise für mich ist.
Nur grob, wie z.B. das ist für dich relevant und das mußt du auch bilden (muß ich auch Klassen bilden?)
Würde mir sehr weiterhelfen.
Gruß
Sammy
AW:Textboxen zurückschreiben
28.07.2005 13:06:36
Hajo_Zi
Hallo Sammy,
das Prinzip ist total einfach und schnell anwendwar, wenn man es vertieft hat.
Jedes Steuerelement hat eine Eigenschaft Tag die nur für den Programmiere geschaffen wurde.
Textbox1 (oder wie der Name lautet) soll in Spalte A, also Tageinenschaft =1 (Numerische Spaltenbezeichnung)
Textbox2 (oder wie der Name lautet) soll in Spalte B, also Tageinenschaft =2(Numerische Spaltenbezeichnung)
usw. für alle Textboxen und sonstige Steuerelemente die in der Tabelle gespeichert werden soll.
Im Code machst Du dann nur eine Schleife über die Steuerelemente

Private Sub CMD_Uebertragen_Click()
'   erstellt von Hajo.Ziplies@web.de 11.03.2004
' <a href="http://home.media-n.de/ziplies/">http://home.media-n.de/ziplies/</a>
'   Übertragen der Textboxen in die Tabelle
'   auf der Eigenschaft Tag der Textbox steht die Spalte in der die Textbox geschrieben werden soll
'   Der Datensatz wird immer nach der letzten Zeile geschrieben
Dim ObCb As Object
Dim LoLetzte As Long
With Worksheets("Tabelle2")
'       Letzte Zeile in Tabelle2 feststellen
LoLetzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
If LoLetzte < 65536 Then
'           Schleife über alle Steuerelemente
For Each ObCb In Me.Controls
'               Prüfe ob das Steuerelement eine Textbox ist
If TypeName(ObCb) = "TextBox" Then
'                   das Verfahren gilt nicht für die Textbox mit dem Namn TXT_LfdNr
'                   LoLetzte ist die Variable die oben bestimmt wurde
'                   die Spalte wird aus der Tageigenschaft der aktuellen Textbox ausgelesen
If ObCb.Name <> "TXT_LfdNr" Then .Cells(LoLetzte, ObCb.Tag) = ObCb.Value
End If
Next ObCb
Else
MsgBox "Es ist keine Zeile mehr frei"
End If
End With
End Sub

Falls noch unklar und Du Skype hast hast Du mich ja unter meinem Namen anrufen.
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
Anzeige
AW: AW:Textboxen zurückschreiben
28.07.2005 14:33:15
Sammy
Hallo Hajo,
also ich habs jetzt mal bei mir eingegeben. Klappt natürlich nicht.
Du schreibst ja: "die Spalte wird aus der Tageigenschaft der aktuellen Textbox ausgelesen"
Heißt das soviel wie, er nimmt dieselbe Spalte für die TextBox wie sie vorher eingelesen wurde?
Wenn ja, dann kann das ja nicht klappen, weil ich im Moment nur ein Testlauf mache indem ich einen neuen Vertragspartner anlege. Also werden keine Daten eingelsen also auch keine Spaltennummer.
Ich hoffe das ist so, weil denn dann hätte ich das russische übersetzt.
Wenn das so ist, dann kann ich die Schleife nutzen wenn ich einen Partner bearbeite aber kann ich das auch benutzen, wenn ich einen neuen Anlege?
Gruß
Sammy
ps.Habe ich den nun alle Exceleinstellungen die ich geändert habe wieder rückgängig gemacht?
Anzeige
AW: AW:Textboxen zurückschreiben
28.07.2005 14:40:52
Hajo_Zi
Hallo Sammy,
könnten wir uns nicht einigen den beitrag am Ende fortzusetzen.
Ich habe es immer so interpretiert das Du alle Datensatze in einer Tabelle hast und falls ein neuer kommt wird er hinten angehängt. Ansonten ist Dein Code falsch.
hier mal nur ein kleiner Teil.

.Cells(z, 1) = Eingabefenster.TextBox11
.Cells(z, 2) = Eingabefenster.TextBox36
.Cells(z, 3) = Eingabefenster.TextBox56
.Cells(z, 4) = Eingabefenster.TextBox76
.Cells(z, 5) = Eingabefenster.TextBox96
.Cells(z, 6) = Eingabefenster.TextBox116
.Cells(z, 7) = Eingabefenster.TextBox136
.Cells(z, 8) = Eingabefenster.TextBox156
.Cells(z, 9) = Eingabefenster.TextBox176
.Cells(z, 10) = Eingabefenster.TextBox196

Ich lese das so das z.b. die Textbox196 immer in Spalte 10 geschrieben wird, ich habe keinen Code gefunden wo diese Textbox in eine andere Spalte geschrieben wird.
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
Anzeige
AW: Excel Zustand
28.07.2005 11:52:16
Hajo_Zi
Hallo Sammy,
wenn Du mit Deiner Datei die Exceloberfläche veränderst, solltest Du Sie beim schließen Deiner Datei wieder in den vorherigen Zustand versetzen.
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
AW: Excel Zustand
28.07.2005 12:47:19
Sammy
Erledigt!
Habe folgenden Code eingebaut:
&ltpre&gt
Private Sub Workbook_Deactivate()
On Error Resume Next
Application.CommandBars("Vertragspartner").Enabled = False
End Sub&lt/pre&gt
Danke für den Hinweis
Gruß
Sammy
AW: Excel Zustand
28.07.2005 12:54:07
Hajo_Zi
Hallo Sammy,
de Code ist noch nicht komplett. Bei schliesen der Datei muß die Symbolleiste gelöscht werden. Bin ich jedenfalls der Auffassung.
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
AW: Excel Zustand
28.07.2005 13:11:13
Sammy
Hi Hajo!
So besser?
&ltpre&gt
Private Sub Workbook_Deactivate()
On Error Resume Next
Application.CommandBars("Vertragspartner").Enabled = False
End Sub&lt/pre&gt
&ltpre&gt
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.CommandBars("Vertragspartner").Delete
End Sub&lt/pre&gt
Mein Schirm zeigt immer noch russisch an, :-(
Gruß
Sammy
AW: Excel Zustand
28.07.2005 13:15:20
Hajo_Zi
Hallo Sammy,
Russisch ist bei mir schon paar Jahre her, da brauche ich auch meine Zeit.
Ich hätte nicht Enabled sondern Visible. Um Deine Symbolleiste ging aber nicht das Problem. Da fehlt ja noch mehr. Was ist, wenn Du DEine Datei wieder aktivierst?
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
AW: Excel Zustand
28.07.2005 13:29:24
Sammy
Hi Hajo,
hab mich wieder mal zu früh gefreut... Was meinst su denn mit:
Um Deine Symbolleiste ging aber nicht das Problem.
Um was gehts denn dann? Hab ich etwa nochwas in Excel verändert und ich weiß nichts davon?
Ist das mit dem Aktivieren jetzt hinfällig? (diesmal bleibt das Häckchen, sind ja genug Fragen im Text)
&ltpre&gt
Private Sub Workbook_Activate()
On Error Resume Next
Application.CommandBars("Vertragspartner").Visible = True
End Sub&lt/pre&gt
&ltpre&gt
Private Sub Workbook_Deactivate()
On Error Resume Next
Application.CommandBars("Vertragspartner").Visible = False
End Sub&lt/pre&gt
&ltpre&gt
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.CommandBars("Vertragspartner").Delete

End Sub&lt/pre&gt
Gruß
Sammy
AW: Excel Zustand
28.07.2005 13:16:37
Sammy
Hi Hajo,
die Sache ist denke ich erledigt! also nehm ich mal schnell das Häckchen raus. Du siehst ich lerne...
Danke für den Beitrag oben. Habe leider kein Skyp aber mit deinen Hinweisen denke ich kann ich mioch an die Arbeit machen, danke!
Ich hoffe wir sprechen uns erst wieder wenn ich erfolgreich die Aufgabe gelöst habe, dann können wir uns ja vielleicht wieder meinem eigentlichen Problem widmen.
Viele Grüße
Sammy
AW: Excel Zustand
28.07.2005 13:22:30
Hajo_Zi
Hallo Sammy,
der Code wird dadurch übersichtlicher und den Balken habe ich auf Deiner Userform immer noch nicht gefunden.
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
AW: Excel Zustand
28.07.2005 13:36:19
Sammy
Hallo Hajo!
Das wird hier alles verwirrender. Ich glaub wir schreiben hier Kreuz und Quer (ich weiß ich bin Schuld!)
Diese Fortschrittsanzeige oder Balken, die erscheint nicht auf der Userform sondern in der Tabelle "Vertragspartner" bei den jeweiligen Produkten.
Wenn ich wüßte wie man hier ein Screenshot reinbekommt, dann würde ich dir ein bild schicken...
Viele Grüß
Sammy
AW: Excel Zustand
28.07.2005 13:38:05
Hajo_Zi
Hallo Sammy,
der Beitrag mit dem Du die Runde eröffnet hast ging um eine Fortschrittsanzeige.
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
AW: Excel Zustand
28.07.2005 13:44:55
Sammy
Hallo Hajo,
ich weiß, ich meinte damit ja auch das wir uns weiter oben über die Fortschrittsanzeige unterhalten haben und weiter unten über den Excelzusatand. Das war nur eine Feststellung das ich meine Orientierung so langsam verliere ich lern doch noch das Russiche neben her und arbeiten muß ich ja auch noch...
Ich bin ja froh das ich so viele Antworten von dir bekomme...
Viele Grüße
Sammy
Spalten
28.07.2005 15:04:47
Sammy
Hallo Hajo,
du hast recht ich schreibe es immer in dieselbe Spalte und ich lese natürlcih immer aus der selben Spalte.
Ich habe deinen Code so verstanden: Die Tag eigenschaft speichert die Spalte der Zelle für die TextBox die sie eingelesen hat. Ist das denn so richtig was ich da schreibe?
In meinem Fall, hab ich ja zwei Varianten. Einmal einen neuen Partner anlegen (den Code hast du in der Beispieldatei die ich dir geschickt habe) und die andere Variante bestehende Partner bearbeiten (das mußte ich löschen da Datei zu groß).
Ich häng das ganze noch mal an und lösch einfach soviel von dem Code das du beide Varianten sehen kannst und die Fortschrittsanzeige, ok?
https://www.herber.de/bbs/user/25086.xls
Viele Grüße
Sammy
AW: Spalten
28.07.2005 15:21:37
Hajo_Zi
Hallo Sammy,
aus Deinem Code Userform1 habe ich jetzt gesehen das Du die Daten aus zwei Tabellen holst.
In diesem Fall mußt Du ja die Tabelle und die Spalte getrennt durch ein Leerezeichen eingeben. (Deine Tabellennamen habe ja kein Leerzeichen). Warum Du 2 Userformen brauchst ist mir schleihaft, mir ist kein größerer Unterschied aufgefallen.
Es ist so das das Forum eine freiwillige Sache ist. Ich habe es schon mal realisiert das ich für jemand im Forum seinen Code umgeschrieben habe. Das hängt aber von vielen Dingen ab. In Deinem Fall muß ich Dir leider schreiben, das kostet viel zu viel Zeit mich in Deinen Code einzuarbeiten.
In dieser Datei sieht man schon den Fortschrittsbalken. Das war ja in der anderen noch nicht so drin.
Man könnte sich jetzt mit viel Arbeit die Mühe machen und die Logik ergründen. Ich vermute mal Du hast in der Zelle 9 Leerstellen und nach jeder Checkbox wird eine Leerstele anders gefärbt. Welche Zelle wann ?
Vielleicht solltest Du einen neuen Beitrag aufmachen und das Prinzip Deiner Fortschrittsanzeige genauer erklären.
Für die lesbarkeit des Codes macht es sich immer besser, wenn überflüssige Leerzeilen entfernt werden und der Code eingerückt wird. Hans hat in seinem Downloadbereich schon eine XLA Datei für die einrückungen (irgenwas mit plus)
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
Schade!
28.07.2005 16:02:16
Sammy
Hallo Hajo,
Ja ich hole mir die durch den Doppelclick in Tabellenblatt1 die Zeilennummer den rest hole ich aus dem Tabellenblatt "DatenBlatt", ich schreibe sie in zwei. Eines zur Ansicht und eines zur speicherung der Daten welches am Ende nicht sichbar sein soll. Weiter konnte ich dir leider nicht folgen.
ich kann schon verstehen das du meinen Code nicht durchakkern willst weil der lang ist und vielleicht auch unübersichtlich und auch wahrscheinlich nicht logisch aber 1 Frage hab ich trotzdem noch:
Das eigentliche Problem bezog sich ja auf genau 16 Zeilen Code, nämlich diese:
&ltpre&gt
Sub SetzeFortschritt(z As Range, wert As Double, Optional max)
Dim variabel As Double
If IsMissing(max) Then max = zähler
With z
.Value = String(max, ChrW(9608))
.Font.ColorIndex = 3
End With
With z.Characters(Start:=1, Length:=wert).Font
.ColorIndex = 4
End With
End Sub&lt/pre&gt
und der Aufruf mit:
SetzeFortschritt Range("C" & z), striche
und der vorherigen Abfrage mit:
striche = 0
For s = 1 To 10
If Me.Controls("Checkbox" & s) = True Then striche = striche + 1
Next s
Alles andere spielt doch eigentlich keine Rolle für meine Frage oder?
Noch zu deiner Anmerkung oben. Ich habe eine zweite Userform gemacht weil ich nicht trennen konnte zwischen A: neu Anlegen und in die nächste freie Zeile schreiben B:Partner bearbeiten und in die selbe Zeile wieder schreiben. Ich bin Anfänger und solche Probleme legen mich quasi lahm. Deshalb hab ich einfach eine neue gemacht die genauso aussieht aber in die selbe Zeile schreibt. Das war der einzige Grund.
Schade das du mir nicht mehr helfen kannst. Ich danke dor trotzdem für diesen tollen Tag im Forum und für die Schleife und vielen Hinweise. Ich versuch die jetzt mal in meine zweite Userform einzubauen. Ach ja, hatte ich denn eben recht, das man erst einlesen muß um den Spaltenindex zu bekommen?
Viele Grüße
Sammy
Geschafft!
28.07.2005 17:05:23
Sammy
Hallo Hajo!
Ich habs geschafft!!! Die Anzeige arbeitet genauso wie ich es jetzt brauche, cooooooool.
Zwei Fehler waren drin:
1.um die Varibale "striche" müssen Klammern
2.Natürlich muß die Zeile
SetzeFortschritt Range("C" & z), (striche)
auch an der richtigen Stelle stehen, nämlich nachdem z ein Wert zugewiesen wurde.
Puhhhh das wäre erledigt aber Morgen komm ich schon wieder mit dem nächsten Bug, schönen Abend dir.
Viele Grüße
Sammy

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige