Clever-Excel-Forum

Normale Version: Multiplikation
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6
Hallo George,

ich sah gerade noch, dass das hier
For i = Asc("Y") To Asc("ZZ")
gar nicht geht, da der ASCII-Code nichts mit der Spaltennummer zu tun hat.
Hier mal der komplett umgestellte Code, wie er funktionieren sollte (ich hab ihn nicht getestet):
Option Explicit

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 = Range("Y:Y").Column To Range("ZZ:ZZ").Column   'requiredSheet.Range über Schleife mit Variablen hochzählen ; i as Integer ; i++
   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
 Next i
End Sub
Gruß Uwe
Hallo Uwe,

wegen dem i=Asc(Y)... habe ich Range(Chr(i)... genommen. Dadurch wird aus der Zahl wieder das Y Smile
Warum da nix mehr übertragen wird, kann ich allerdings nicht nachvollziehen Sad
Hallo André,

(09.06.2016, 17:35)schauan schrieb: [ -> ]Hallo Uwe,

wegen dem i=Asc(Y)...  habe ich Range(Chr(i)... genommen. Dadurch wird aus der Zahl wieder das Y  Smile
Warum da nix mehr übertragen wird, kann ich allerdings nicht nachvollziehen Sad

vermutlich, weil Du requiredSheet vergessen hast!!!  :19:  :05:

Aber krass ist diese Variante ja schon. :)

Gruß Uwe
Hallo Uwe,

Zitat:Aber krass ist diese Variante ja schon
was einem eben Nachts so durch den Kopf geht ... Allerdings hatte ich da trotzdem schon anderthalb Augen zu. So, wie es der Fragesteller programmiert hat und ich in meinem jugendlichen Leichtsinn fortgeführt habe, wird es nichts hochprozentiges. Asc liefert nur den Wert des ersten Zeichens, "zz" bringt in der Umkehr entsprechend nur "z". Das klappt also nur mit "einstelligen" Spalten oder man muss mehr programmieren.

Aber vergessen hab ich eigentlich nichts. Das da noch was hingehört, deswegen stehen ja die vielen Punkte davor und dahinter.
Hallöchen George,

hier mal noch eine bessere Variante für die Spaltenzuordnung in einer Schleife. Im Prinzip geht das so:

Code:
For i = Columns("Y").Column To Columns("ZZ").Column
  Cells(1, i).Value = i
Next

Hat Uwe ähnlich in seinem Beispiel verwendet, dort nur mit Range("Y:Y").Column. Alternative Schreibweisen wären z.B. noch Range("Y1").Column oder Cells(1, "Y").Column

Oder For i = 25 to 702 - da muss Excel nicht erst irgendwas umrechnen ...
Guten Abend,

habe jetzt die Anpassung von Uwe in meiner Schleife vorgenommen und nun wurden nach betätigung meines Übertragungsbuttons die Daten der einen Variante in Spalten bis ZZ gefüllt. :05:  :22:

Anscheinend benötigt die Schleife noch eine Unterbrechungsvorgabe oder so ?!
Hallo George,

eventuell hast Du einen Schreibfehler drin? Kannst Du die Zeile mal kopieren und posten?
Ja davor hatte ich einen Fehler gemacht.Hab die vorherige Aussage korigiert!
Sorry
Hallo André,

(09.06.2016, 19:17)schauan schrieb: [ -> ]Asc liefert nur den Wert des ersten Zeichens, "zz" bringt in der Umkehr entsprechend nur "z". Das klappt also nur mit "einstelligen" Spalten oder man muss mehr programmieren.

jetzt, da Du es sagst. Soweit hatte ich das gedanklich gar nicht mehr vertieft. :)

Gruß Uwe
Abend,

muss ich eventuell eine schritweises hochzählen der Variablen i extra definieren oder warum durchläuft er bei einem Befehl den ganzen angegeben Bereich von y bis ZZ?

beste Grüße
Seiten: 1 2 3 4 5 6