liebe Accessprofis!
Ich habe ein Formular mit den Feldern 0113 bis 0319 also 73Felder je Datenzeile
Diese felder müssen zb von 0113 bis 0314 bzw  0213 bis 0119 mit Faktoren ausgefüllt werden. Meistens sind diese Faktoren für die felder zb 0113 bis 0314 gleich.
Datenzeilen;     "0113"  "0213"  "0313"  "0413" ......usw
Faktor                 0,02    0,02                 0,02
    
Frage:
gibt es eine Möglichkeit am Formular die betroffenen Felder mit einem Faktor automatisch ausfüllen zu lassen. Eingabe "faktor" "von" "bis" oder so? 
			
			
			
				Hi, probier mal was in der Richtung aus:
Dim i As integer
For i = 113 To 314  
 Me("txt0" & (i)).Value = 0.02
Next i
			
			
				Danke für die schnelle Antwort
im Formular soll ein Feld für "von"
ein Feld für "bis"
ein Feld für "faktor"
bitte sei so nett un erkläre mir deinen code nochmals anhand meines vorschlages
georg
			
			
			
				Hallo,
falls die Textfelder wie beschrieben benannt sind, dann etwa so beim Klick auf die Schaltfläche "btnAusfüllen" als Ereignisprozedur "Beim Klicken" der Schaltfläche:
Sub btnAusfüllen_Click()
Dim i As Long
For i = nz(Me!von,0)  To nz(Me!bis,0) 
 Me("0" & i ) = Str(nz(Me!faktor,0))
Next i
End Sub
			
			
			
				Danke irgendwas geht nu ned
Private Sub Befehl173_Click()
Sub btnAusfüllen_Click()
Dim i As Long
For i = Nz(Me!von, 0) To Nz(Me!bis, 0)
 Me("0" & i) = Str(Nz(Me!faktor, 0))
Next i
End Sub
Fehler: Endsub erwartet ?
			
			
			
				Hallo,
Scherzkeks...   8)
Sub btnAusfüllen_Click()     weglassen, wenn Du schon Deine eigenen Namen benutzen willst....
			
			
			
				sorry, schwer ists mit den anfängern!
Private Sub Befehl173_Click()
Dim i As Long
For i = Nz(Me!von, 0) To Nz(Me!bis, 0)
 Me("0" & i) = Str(Nz(Me!faktor, 0))
Next i
End Sub
Fehler: Typen unverträglich?
			
			
			
				Hallo,
ok, was steht in den Textfeldern "von" und "bis"?
schreib zudem mal so:
For i = val(Nz(Me!von, 0)) To val(Nz(Me!bis, 0))
			
			
			
				Schreib das doch etwas etwas sauberer:
Private Sub Befehl173_Click()
Dim intVon as integer
Dim intBis as integer
Dim dblFaktor as double
if isnumeric(Me!von) then
   intVon = me!von
else
   msgbox "Wert Von ist nicht numerisch!   ", vbcritical
   exit sub
end if
if isnumeric(Me!bis) then
   intBis = me!bis
else
   msgbox "Wert Bis ist nicht numerisch!   ", vbcritical
   exit sub
end if
if intvon > intbis then
   msgbox "Von größer bis!   ", vbcritical
   exit sub
end if	
if isnumeric(Me!faktor) then
   dblFaktor = me!faktor
else
   msgbox "Wert Faktor nicht numerisch!   ", vbcritical
   exit sub
end if
 call FelderVorbelegen(intVon, intBis, dblFaktor)
	
End sub
Private Sub FelderVorbelegen(byval intVon as integer, byval intBis as integer, byval dblFaktor as double)
  For i = intvon To intbis
    Me("0" & i) = dblfaktor
  Next i
end sub
			
			
			
				@wurliwurm
Private Sub Befehl173_Click()
Dim intVon As Integer
Dim intBis As Integer
Dim dblFaktor As Double
If IsNumeric(Me!von) Then
intVon = Me!von
Else
MsgBox "Wert Von ist nicht numerisch!   ", vbCritical
Exit Sub
End If
If IsNumeric(Me!bis) Then
intBis = Me!bis
Else
MsgBox "Wert Bis ist nicht numerisch!   ", vbCritical
Exit Sub
End If
If intVon > intBis Then
MsgBox "Von größer bis!   ", vbCritical
Exit Sub
End If
If IsNumeric(Me!faktor) Then
dblFaktor = Me!faktor
Else
MsgBox "Wert Faktor nicht numerisch!"", vbcritical"
Exit Sub
End If
Call FelderVorbelegen(intVon, intBis, dblFaktor)
 End Sub
Fehler: sub oder function nicht Definiert? Erklär mir doch einmal was du da genau schreibst und warum. Dann lern ich was, und das problem ist sicher schneller gelöst.DANKE
@DF6GL:
in den felder [von] bis [bis] steht zb:[von]= 0113 bis [0213] im feld [faktor] zb 0,02 dann click und die Felder 0113 und 0213 enthalten den faktor 0,02
			
			
			
				Ich erlaube mir, da mir wurliwurm schon mal sehr geholfen hat:
Private Sub Befehl173_Click()
Dim intVon as integer        'Deklaration einer Variablen als Integer (ganzzahlige Werte)
Dim intBis as integer         'Deklaration einer Variablen as Integer (ganzzahlige Werte)
Dim dblFaktor as double   'Deklaration einer Variablen als double (Kommazahl)
if isnumeric(Me!von) then  'Abfrage, ob Me!von (Formularfeld für den Wert "von") eine numerische Zahl ist
   intVon = me!von             'Me!von ist numerisch, also wird die Variable intvon mit dem Wert des Formularfeldes "von" gefüllt
else                                   'anderenfalls
   msgbox "Wert Von ist nicht numerisch!   ", vbcritical  'Darstellung einer Messagebox, die darauf hinweist, dass der 
                                                                                      'Formularfeldwert "von" keine numerische Zahl ist
   exit sub                                                                       'Funktion verlassen, damit User korrigieren kann
end if                                  'Ende der Abfrage
if isnumeric(Me!bis) then    'Abfrage, ob der Formularfeldwert "bis" numerisch ist
   intBis = me!bis                '"bis" ist numerisch, also wird der Formularfeldwert in die Variable gespeichert
else                                    'anderenfalls
   msgbox "Wert Bis ist nicht numerisch!   ", vbcritical   'Darstellung einer Messagebox, die darauf hinweist, dass der 
                                                                                      'Formularfeldwert "bis" keine numerische Zahl ist
   exit sub                                                                       'Funktion verlassen, damit User korrigieren kann
end if                                  'Ende der Abfrage                                                                   
if intvon > intbis then         'Plausibilitätsabfrage, ob "von" größer ist als "bis"
   msgbox "Von größer bis!   ", vbcritical                        'Darstellung einer Messagebox, die darauf hinweist, dass der 
                                                                                      'Formularfeldwert "von" größer ist als "bis"
   exit sub                           'Verlassen der Funktion, damit User die Zahlen korrigieren kann
end if	                           'Ende der Abfrage
if isnumeric(Me!faktor) then     'Abfrage, ob der Formularfeldwert "Faktor" eine numerische Zahl ist 
   dblFaktor = me!faktor           'ist numerisch, Variable dblfaktor wird damit gefüllt
else                                          'anderenfalls
   msgbox "Wert Faktor nicht numerisch!   ", vbcritical   'Darstellung einer Messagebox, das der Faktor keine numerische Zahl ist
   exit sub                                 'Verlassen der Funktion, damit User den Faktor korrigieren kann
end if                                       'ende der Abfrage
 call FelderVorbelegen(intVon, intBis, dblFaktor)    'Aufruf der Prozedur "FelderVorbelegen" mit Übergabe der gefüllten Variablen
	
End sub   ' Verlassen dieser Prozedur[/font]
 
			
			
			
				Und jetzt zur zweiten Prozedur:
Private Sub FelderVorbelegen(byval intVon as integer, byval intBis as integer, byval dblFaktor as double)
  For i = intvon To intbis       'Schleife, die so oft läuft, wie die Anzahl zwischen von und bis
    Me("0" & i) = dblfaktor     'Me verweist auf das Formular, dann kommt ein zusammengesetzter Feldname 0 in Anführungszeichen bleibt   
                                             'so bestehen das kaufmännische "und" verbindet nun die folgende Angabe mit der 0. Es folgt i, das pro
                                             'Schleife einen Wert zwischen von und bis annimmt. Sagen wir 113, dann wird auf das Formularfeld 0113 
                                             'verwiesen." = dblfaktor" weist also dem Feld Me!0113 den aktuellen Wert de Faktors zu
  Next i                                  'nächster Schleifendurchlauf
end sub      'Ende dieser Prozedur        
Ich befürchte, Du arbeitest mit 2 Formularen, eines, in dem die Daten eingegeben werden sollen und eines, welches die Werte von bis und Faktor abfragt.
In dem Fall ist der Verweis zum Füllen der Felder von bis und Faktor mit Me denke ich nicht konkret genug, da müsste dann sowas wie "FormularnamemeinesFormularsmitden73Feldern"("0" & i) = dblfaktor stehen. Solltest Du tatsächlich im gleichen Formular die Werte abfragen, in dem auch die Felder gefüllt werden sollen, dann wäre Me richtig.       
			
			
			
				 :-\
Leider konnte ich keine Schriftart einstellen, die meine Erläuterungen vernünftig darstellen kann. Kopier das in die Zwischenablage, füge es z.B. in Word ein und änder die Schriftart auf Arial, dann steht es bedeutend besser zum lesen da !
Sorry
			
			
			
				@69bruno  vielen Dank so kann ich das ganze leichter behirnen, und daraus lernen.
Hab [von] bis [bis] leider nicht numerisch gemacht daher funktioniert das ganze warscheindlich noch nicht. Bin am überlegen das umzubauen,.....oder gehts als text auch.....wohl eher nicht woher weis die routine welche felder auszufüllen sind.......
alles in einem formular....hab kein zweites formular zum ausfüllen
lg
			
			
			
				Zitat von: georg5 am September 21, 2012, 12:13:25
Hab [von] bis [bis] leider nicht numerisch gemacht daher funktioniert das ganze warscheindlich noch nicht. 
Textfelder zur Eingabe haben grundsätzlich kein bestimmtes Format. Wenn Du nicht die Tastenkommandos filterst, kannst Du da alle Zeichen eingeben. Von daher ist es m.E. der beste Weg, von Typ String in Integer zu übergeben. Access ist da geduldig und braucht nicht unbedingt eine explizite Angabe einer Konvertierfunktion, solange Du vorher mit ISNUMERIC abfragst, ob der Wert in eine Zahl konvertierbar wäre.
Es geht also
Dim myString as string
Dim myInt as integer
myString = "35"
myInt = meinString
myString = "35.5"
myInt = meinStringmyString = "35,523"
myInt = meinString
			
 
			
			
				@wurliwurm
@69bruno
vielen dank für eure Unterstützung
hab mein Formularkonzept als Anlage beigefügt.
Irgendwas funkt noch nicht. ???
vielleich könnt ihr mir den gesammt notwendigen code nochmals posten...vieleich hab ich was übersehen
[Anhang gelöscht durch Administrator]
			
			
			
				Zitat von: georg5 am September 21, 2012, 13:36:28
hab mein Formularkonzept als Anlage beigefügt.
Der Code ist ausführlichst kommentiert gepostet worden. Wie können hier gerne best practices und Tricks verraten und einem weiterhelfen, der gerade hängt, aber mit Ereignissen und Sub-Routinen mußt Du dich schon eigeninitiativ vertraut machen.
Anhand dem Bild kann man nicht sehen, wie die Felder technisch heißen und welcher Fehler auftritt. Dazu mußt Du die Access-Datei posten.
			
 
			
			
				@wurliwurm
hab ja nur gefragt......
es ist halt kaum möglich die ganze angelegenheit zu lernen wennst keinen lehrer hast.
Es liegt halt oft an den einfachsten fragen, die für dich selbstverständlich sind und für mich als "beginner" nicht.
schreibts du beide codes in die selbe ereignisprozedur zum ausfüllen?
derzeitiger fehler: end if ohne if-block    
danke
			
			
			
				Hallo,
ich denke, hier wird mit Kanonen auf Spatzen geschossen und doch nicht getroffen...
@georg5:  Lad die Db mal hier hoch und beschreibe anhand der Formular- und Textfeldnamen, wo was genau passieren soll...
			
			
			
				 :D
Mag sein, aber ein Spatz hat auch nur einen Flügel.
Wie der Fehler schon sagt, steht im Code irgendwo end if, aber vorher kein If ....then
Also zähle die If's und die End if's.
Wenn Du das nach der Reihenfolge machst, wie sie im Code auftauchen, wirst Du wohl 2 mal ein end if finden, aber vorher keine 2 If's gehabt haben...........
			
			
			
				so....ich glaub ich muss mein problem nochmals beschreiben anhand der hochgeladenen datenbank (relevanten Teile, bei 200kb bleibt nicht mehr viel übrig).
Formular >Prognose FMA<
jetzt sind wir bei besagtem Formular:
In diesem Formular hätte ich gerne eine Ausfüllhilfe programmiert. Jede Datenzeile = >LG< (117stk) hat eine bestimmte Restsumme zugeordnet bekommen. Diese Restsumme wird anhand der Faktoren der Felder AZ25_01_13 usw. auf die jeweiligen Spalten  aufgeteilt. Das Ganze wird 117mal durchgeführt. Als Ergebniss erhate ich einen Plan (noch nicht gertig) von AZ25_01_13 = Jänner 2013 bis AZ99_03_19 = März 2019 mit den Prognosesummen.
Nochmals vielen Dank für eure Hilfe...und ich weis meine DB ist nicht profimäßig  :'(
[Anhang gelöscht durch Administrator]
			
			
			
				Hallo,
unabhängig vom Aufbau der Db...
welcher Teil der Textfeldnamen soll jetzt für die Angabe "von"  und "bis" hergenommen werden?
Die Namen sind ja nun nicht in der Form wie anfänglich beschrieben...
Am Besten benennst Du zunächst die einzelnen Textfelder in einer berechenbaren Form, z. B.:
AZ25 , AZ26 , AZ27 , ....
[Anhang gelöscht durch Administrator]
			
			
			
				welcher Teil der Textfeldnamen soll jetzt für die Angabe "von"  und "bis" hergenommen werden?: versteh deine Frage nicht. Den im feld "Faktor" eingesetzte Wert soll in die Felder von: zb AZ25 bis zb AZ33 im geweiligem "LG" ausgefüllt werden. 
Die Namen sind ja nun nicht in der Form wie anfänglich beschrieben...: sorry mein Fehler. 
Am Besten benennst Du zunächst die einzelnen Textfelder in einer berechenbaren Form, z. B.:: siehe aktualisierte Anlage
DANKE
[Anhang gelöscht durch Administrator]
			
			
			
				Hallo,
aber so nicht     ;)
Mit Textfelder habe ich die Textfelder gemeint, nicht die Tabellenfeldnamen (bzw. Steuerelementinhalt-Angaben) oder Bezeichnungsfelder-Beschriftung...
Siehe auch die nachträglich angehängte Anlage in meinem letzten Posting. Dort habe ich die Originalnamen benutzt.
			
			
			
				hi,
ich steh auf der Leitung ???
welche Textfelder meinst du.....
			
			
			
				sorry hab die leitung schon wieder verlassen und die Textfelder berechenbar gemacht........jedoch erscheint als Fehler Wert"von" ist nicht numerisch  ?????
was fehlt noch .... wo ist der Denkfehler?
@ DF6GL: bei deiner positigDB hats doch schon funktioniert? oder
[Anhang gelöscht durch Administrator]
			
			
			
				Hallo,
damit die Felder AZ25_xxxx   bis  AZ30_xxxx  mit dem eingebenen Faktor multipliziert werden, sollte bei "Von"  25 und bei  "bis" 30 eingetragen werden.
 
			
			
			
				ja Danke, das funktioniert aber nur fallweise und das nur beim ersten Datensatz (LG)
der bereits eingetragenen Wert wird auch nicht überschrieben sondern zum autom. Faktor addiert?
Die Hilfe bringt mich zur Verzweiflung ???
			
			
			
				Hallo,
was heißt denn "fallweise"?
Es funktioniert beim angezeigten Datensatz.....
"bereits eingetragenen Wert wird auch nicht überschrieben sondern zum autom. Faktor addiert?"
Nein, siehe Bilder...
oder Du meinst etwas anderes, als Du sagst....
Private Sub Befehl173_Click()
Dim intVon As Integer
Dim intBis As Integer
Dim dblFaktor As Double
If IsNumeric(Me!von) Then
intVon = Me!von
Else
MsgBox "Wert Von ist nicht numerisch!   ", vbCritical
Exit Sub
End If
If IsNumeric(Me!bis) Then
intBis = Me!bis
Else
MsgBox "Wert Bis ist nicht numerisch!   ", vbCritical
Exit Sub
End If
If intVon > intBis Then
MsgBox "Von größer bis!   ", vbCritical
Exit Sub
End If
If IsNumeric(Me!faktor) Then
dblFaktor = Me!faktor
Else
MsgBox "Wert Faktor nicht numerisch!   ", vbCritical
Exit Sub
End If
Call FelderVorbelegen(intVon, intBis, dblFaktor)
End Sub
     
 Private Sub FelderVorbelegen(ByVal intVon As Integer, ByVal intBis As Integer, ByVal dblFaktor As Double)
 Dim ctl As Control
 
 For Each ctl In Me.Controls
 On Error Resume Next
 If Mid(ctl.Name, 3, 2) >= Me!von And Mid(ctl.Name, 3, 2) <= Me!bis Then
 ctl.Value = ctl.Value * Me!faktor
 End If
 Next
 End Sub
[Anhang gelöscht durch Administrator]
			
			
			
				hi,
wenn in den Textfelder (AZ25 bis AZ99) kein Faktor eingetragen ist funktioniert die Routine leider nicht. Erst wenn ein Wert eingetragen (händisch) ist kann man über die Routine einen Wert automatisch eintragen jedoch wird der ergibt der Wert in den Feldern (AZ25-AZ99) plötzlich "vorher händisch eingetragener Wert x Wert aus dem Feld "Faktor" ????
Leider kann ich im Code keinen Fehler finden???
Hast du einen Tipp @DF6GL 
			
			
			
				Hallo,
naja, so hab ich die Bedeutung des Feldes "Faktor" verstanden, dass es ein Multiplikationsfaktor (was "Faktor" normalerweise bedeutet) für die in den einzelnen Textfeldern stehenden Werte sein soll.  Wenn der Wert in "Faktor" lediglich in die einzelnen Felder übergeben werden soll, dann muss es halt so heißen:
Private Sub FelderVorbelegen(ByVal intVon As Integer, ByVal intBis As Integer, ByVal dblFaktor As Double) 
Dim ctl As Control  
For Each ctl In Me.Controls 
On Error Resume Next 
If Mid(ctl.Name, 3, 2) >= intvon And Mid(ctl.Name, 3, 2) <= intbis Then 
ctl.Value =  dblfaktor  
End If 
Next 
End Sub
PS: soll auch ein "leeres" Faktor-Feld übernommen werden (NULL), dann so (Voraussetzung dabei ist, dass die Tabellenfelder NULL-"Werte" zulassen):
Private Sub Befehl173_Click()
Dim intVon As Integer
Dim intBis As Integer
Dim dblFaktor As Double
If IsNumeric(Me!von) Then
intVon = Me!von
Else
MsgBox "Wert Von ist nicht numerisch!   ", vbCritical
Exit Sub
End If
If IsNumeric(Me!bis) Then
intBis = Me!bis
Else
MsgBox "Wert Bis ist nicht numerisch!   ", vbCritical
Exit Sub
End If
If intVon > intBis Then
MsgBox "Von größer bis!   ", vbCritical
Exit Sub
End If
Call FelderVorbelegen(intVon, intBis, Me!faktor)
End Sub
     
 Private Sub FelderVorbelegen(ByVal intVon As Integer, ByVal intBis As Integer, ByVal faktor)
 Dim ctl As Control
 
 For Each ctl In Me.Controls
 On Error Resume Next
 If Mid(ctl.Name, 3, 2) >= Me!von And Mid(ctl.Name, 3, 2) <= Me!bis Then
 ctl.Value = faktor
 End If
 Next
 
 
 End Sub
			
			
			
				@DF6GL vielen Dank  du bist der BESTE es funktioniert wie geplant
sorry wegen meiner Unerfahrenheit