Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Multiplikation
#41
Hallo George,

was soll denn passieren?
In einer For-To Schleife ist die Standard-Schrittweite 1. Für andere gibt es den Zusatz STEP n, wobei n bei Bedarf auch negativ sein kann.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#42
Guten Morgen,

na ich wollte das er nach Betätigung meines Buttons die jeweilige Variante mit ihrne Information von der Augangstabelle in eine ander Tabelle überträgt. Dabei soll er die zu Übertragenen Daten in Spalte Y eintragen und die nächsten Varianten in die darauf folgenden Spalten übertragen.Zurzeit überträgt er mir die erste ausgewählten Varianten in den kompletten Bereich von Y:ZZ. Die Schleife sollte aber die einzelnen Varianten ab Spalte Y und dann mit derSchrittweite 1 in den folgende Spalte nach ausführung des Buttons übertragen.

Ich wunder mich das die Schleife automatisch den ganzen Bereich bei der ersten Auswahl durchläuft. Muss ich die Schrittweite mit n = 1 doch extra definieren ?
Oder einen Abbruch Befehl einbauen bei jeder Übertragung bevor nicht die nächste eingeleitet wird

Vielen Dank und schönes Wochenende
Antworten Top
#43
Hallöchen,

der Code arbeitet die Spalten einzeln ab. In jeder Spalte geht er dabei von der definierten Startzeile bis zur letzten genutzten Zeile des kompletten Bereichs vom Startsheet nach unten und überträgt jede Zelle in das Blatt Bedarfsplanung.
Also Y2 aus dem Workshhet(1) wird nach Y2 vom Worksheet("Bedarfsplanung") übertragen usw.
Allerdings kann ich nicht sagen, wie das Workshhet(1) heißt. Im ungünstigsten Fall ist es das Blatt Bedarfsplanung oder ein ziemlich leeres Blatt ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#44
Guten Tag ,

also mit diesem Makro
Code:
End Sub

Private Sub UserForm_Initialize()

Const Seat_Variant_End As Integer = 50

Dim i As Integer

For i = 1 To Seat_Variant_End
   With Me.Seat_Variant
           
           .AddItem i

           .List(.ListCount - 1, 1) = i
           
           End With
           

   
Next i

Me.Seat_Variant.Value = 1
Me.Seat_Variant.SetFocus

End Sub

Private Sub GenerateButton1_Click()

   Call Requiredgenerate1(Me.Seat_Variant.Value)  'Methodenaufruf der Listgenerate

   Unload Me

End Sub

wird durch die Betätigung des CommandButtons über die seatNo der Bereich ("Y2:BH") angesprochen.

Bei  der beispielsweisen Auswahl "1" wird die Spalte Y mit allen Ihren Daten ab Zeile 2 aus dem Worksheet in die Mappe Bedarfsplanung ab Zeile 2 übertragen.

Const Search_Start_Row As Integer = 2      'Start der Bauteilsuche ab Zeile 2
Const RESULT_START_ROW As Integer = 2      'Übertragung der Bauteile ab Zeile 2
 
 Set startSheet = Worksheets(1)              'Zuweisung der Objektvariablen
 Set reference1Cell = startSheet.Range("Y2:BH2").Find(seatNo, LookIn:=xlValues)


Ich möchte nach der Auswahl einer Variante diese in die Spalte Y in die Mappe "Bedarfsplanung" übertragen.Anschließend will ich nach der Auswahl einer nächsten Variante diese in die Spalte Z übertragen.
Also soll nach der bedarfsmäßigen Variatenauswahl mittels einer Schleife mit Schrittweite 1 (Y,Z,AA usw) die einzelnen ausgewählten Varianten nacheinander in die Zielspalten der Mappe "Bedarfsplanung" übertragen werden.
Ich hoffe die Erläuterung war verständlich und ihr könnt mir bitte weiter bei der Lösungsfindung helfen ,

Vielen Dank und schönen Sonntag
Antworten Top
#45
Hallöchen,

dann ist aber die Schleife eventuell nicht das richtige Mittel. Wenn Du die erste Auswahl triffst, kommen die Treffer nach Y. Wenn Du die nächste Auswahl triffst, müsste das Makro irgendwo her wissen, dass Du schon in Y warst und nun Z dran ist, usw. Eventuell kann man das daran fest machen, dass in den Spalten mindestens eine bestimmte Anzahl Zellen gefüllt sind und dann die entsprechend erste gefundenen Spalte befüllen. Im Prinzip so:

For i = 25 to 702
if worksheetfunction.counta(columns(i)) then
'... Daten übertragen
Exit for
end if
Next
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#46
Hey,

habe jetzt das Makro jetzt so umgeschrieben und irgendwie passiert jetzt gar nichts mehr :s

Code:
Option Explicit                              'Forderung nach expliziter Deklaration aller Variablen

Public Sub Requiredgenerate1(seatNo As Integer)  'Public(öffentlich) Variablen können von Methoden anderer Module genutzt werden
  
   Dim startSheet As Worksheet                 'startSheet als Arbeitsblatt
   Dim requiredSheet As Worksheet
   Dim requiredSheetName1 As String
   Dim requiredRow As Long                     'Row = Reihe
   Dim reference1Cell As Range                 'Cell = Zelle
   Dim reference1Column As Long                'Column = Spalte
   Dim current1Row As Long
   Dim current1Cell As Range
   Dim i As Integer
  
   Const Search_Start_Row As Integer = 2      'Start der Bauteilsuche ab Zeile 11 in MAL
   Const RESULT_START_ROW As Integer = 2      'Übertragung der Bauteile ab Zeile 11 in Montageliste
  
   Set startSheet = Worksheets(1)              'Zuweisung der Objektvariablen
   Set reference1Cell = startSheet.Range("Y2:BH2").Find(seatNo, LookIn:=xlValues)      'referenzCell = Ausdruck wird in den Formel-Ergebnissen der Zellen vom Bereich AC2 bis BM 2 gesucht
   reference1Column = reference1Cell.Column                                             'referenzColumn = Referenz-Zelle in der Spalte
  
   requiredSheetName1 = "Bedarfsplanung"                                                 'Arbeitsblatt generateSheetName1 heißt Bedarfsplanung
   Worksheets("Bedarfsplanung").Activate                                                 'Aktivierung der Tabelle 3
  
   On Error Resume Next
   Set requiredSheet = Sheets(requiredSheetName1)
   On Error GoTo 0
   For i = 25 To 702                  'Range("Y:Y").Column To Range("ZZ:ZZ").Column              'requiredSheet.Range über Schleife mit Variablen hochzählen ; i as Integer ; i++
      If WorksheetFunction.CountA(Columns(i)) Then
         requiredRow = RESULT_START_ROW
         For current1Row = Search_Start_Row To startSheet.UsedRange.Rows.Count    'Filterung und nur Übertragung von Bauteilen mit einer Anzahl ab 1
            Set current1Cell = startSheet.Cells(current1Row, reference1Column)
            requiredSheet.Cells(requiredRow, i).Value = current1Cell.Value                        'Bauteilanzahl
            requiredRow = requiredRow + 1
         Next current1Row
         Exit For
      End If
   Next
End Sub

Weiß jetzt nicht ob es an der Syntax liegt oder programmier Technisch falsch ist aber eine Fehlermeldung erscheint auch nicht.

Danke für weitere Unterstützung
Antworten Top
#47
Hallo George,

Du musst bei der Prüfung aber auch noch einen Wert hinschreiben. Ich weiß da ja nicht, welchen, deswegen stand nur im Text "... eine bestimmte Anzahl ..." und "... im Prinzip ..."

Also allgemein
If WorksheetFunction.CountA(Columns(i)) < ???

und statt der Fragezeichen die Anzahl gefüllter Zellen, z.B. 2 wenn nur eine Zelle vor der Übertragung gefüllt ist - beispielsweise mit der Überschrift. Es werden dann alle Spalten übersprungen, wo mehr als eine Zelle gefüllt ist.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#48
Hi,

(12.06.2016, 17:48)George schrieb: Weiß jetzt nicht ob es an der Syntax liegt oder programmier Technisch falsch ist aber eine Fehlermeldung erscheint auch nicht.

wie soll eine Fehlermeldung erscheinen, wenn Du die Fehlermeldungen doppelt ausschaltest?
Code:
On Error Resume Next
   Set requiredSheet = Sheets(requiredSheetName1)
   On Error GoTo 0

zwei Mal ist sowieso überflüssig.
Antworten Top
#49
Hallo,

also ich bin ja kein experte und probier viel aus. Deswegen bin ich mir leider nicht immer im klaren was der Code im einzelnen macht.
ich dachte über Set definiere ich die Objektvariable und "aktiviere" das entsprechende Arbeitsblatt über die Abbruchs- oder Auschaltungsfunktion war ich mir nicht klar.
Hab das auskommentiert und eine Zellenvorgabe nach Schauans vorschlag definiert.
Bekomme jetzt die Fehlermeldung 91 : Objektvariable oder With Blockvariable nicht defniert.Zeile
Code:
requiredSheet.Cells(requiredRow, i).Value = current1Cell.Value 
Schönen abend
Antworten Top
#50
Hallo Ralf,

On Error Goto 0 schaltet die Fehlerausgabe wieder ein Smile

Hallo George,

trage bitte erst mal die Änderungen in deinen letzten Stand ein (gestern 18:48) und schaue, was dabei herauskommt.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste