Microsoft Excel

Herbers Excel/VBA-Archiv

Werte zuweisen | Herbers Excel-Forum


Betrifft: Werte zuweisen von: Thomas
Geschrieben am: 13.01.2010 01:33:34

Hallo,

würdet Ihr mir bitte weiterhelfen - komm nicht klar.

Ich habe in der Spalte AL ( A1 = Zuweisung ) ca. 38.000 Zellen die mit 386 verschiedenen Werten gefüllt sind. Die Anzahl der Zellen kann sich immer wieder mal ändern.

In der Spalte AM habe ich die Zahlen 1 bis 386 die ich nun den Werten in den Zellen der Spalte AM zuweisen möchte.

Habs mal so versucht:

Sub Ordnungszahl()
'
' kat_id
'
  Dim lZeile As Long, Counter As Long, kat_id As Long, ZUWEISUNG As Long
  Dim StatusCalc As Long
  With Application
    .ScreenUpdating = False
    StatusCalc = .Calculation
    If StatusCalc <> xlCalculationManual Then .Calculation = xlCalculationManual
    .EnableEvents = False
  End With
  
  lZeile = Cells.SpecialCells(xlLastCell).Row
  
  For Counter = 2 To lZeile
    
  kat_id = Cells(Counter, 40).Value 'Range("AN" & Counter).Value

    
If ZUWEISUNG = Arbeitsspeicher3891 Then kat_id = 1
If ZUWEISUNG = ArbeitsspeicherDDRRAM39843891 Then kat_id = 2
If ZUWEISUNG = ArbeitsspeicherDDR2RAM47813891 Then kat_id = 3
If ZUWEISUNG = ArbeitsspeicherDDR3RAM59413891 Then kat_id = 4
If ZUWEISUNG = ArbeitsspeicherSDRRAM39813891 Then kat_id = 5
If ZUWEISUNG = ArbeitsspeicherSODDR249613891 Then kat_id = 7
If ZUWEISUNG = ArbeitsspeicherSODDR360413891 Then kat_id = 8
If ZUWEISUNG = ArbeitsspeicherSODDR39833891 Then kat_id = 6
If ZUWEISUNG = ArbeitsspeicherSODIMM39823891 Then kat_id = 9
If ZUWEISUNG = Barebonesysteme3927 Then kat_id = 10
If ZUWEISUNG = BarebonesystemeZubehör43413927 Then kat_id = 11
If ZUWEISUNG = BatterienundAkkus5181 Then kat_id = 12

  Cells(Counter, 40).Value = kat_id 'Range("AN" & Counter).Value
    
  Next Counter
  With Application
    .ScreenUpdating = True
    If StatusCalc <> .Calculation Then .Calculation = StatusCalc
    .EnableEvents = True
  End With
  '
End Sub

Ich habe das Makro verkürzt hier reingestellt da die If Then bis 386 gehen - wäre zu lang.

Wenn ich das Script laufen lasse weißt er mir nur die Zahl 386 für alle 38000 Zellen zu.

Wäre nett wenn Ihr mir einen Anstoß geben könntet wie ich das Teil zum laufen bringe.

Merci schon mal im voraus.

Gruß
Thomas

  

Betrifft: ...habe das Makro verkürzt hier reingestellt... von: Luc:-?
Geschrieben am: 13.01.2010 02:23:51

Hi, Thomas,
dabei hast du wohl auch die wichtige Info weggelassen, wo die Variable ZUWEISUNG gefüllt wird, ganz abgesehen davon, dass du sie mit in deiner Subroutine nicht deklarierten anderen Variablen unbekannten Inhalts vgl willst, denn nichts anderes bedeutet If ZUWEISUNG = Arbeitsspeicher3891 Then. Wenn ZUWEISUNG nicht gefüllt wird, hat sie den Wert 0. Eine nicht deklarierte Variable Arbeitsspeicher3891 ist automatisch vom Typ Variant, nicht gefüllt also Empty. Du vglst folglich If 0 = Empty Then und das ist stets False. Wenn du Option Explicit am Modulanfang verwenden würdest (→kann man generell einstellen), hätte VBA die Nichtdeklaration kritisiert und du dadurch bemerkt, dass da was nicht stimmt. Wir können natürlich nicht wissen, ob Arbeitsspeicher3891 eine Variable oder eher ein Text sein soll, zumal Letzteres (String !) ja auch nicht zum Typ von ZUWEISUNG (Long !) passen würde. Also ist der entscheidende Teil deines Pgms völlig unsinnig, ganz im Ggsatz zu sehr sinnvollem Anfang und Ende...
Gruß Luc :-?


  

Betrifft: AW: ...habe das Makro verkürzt hier reingestellt... von: Thomas
Geschrieben am: 13.01.2010 08:41:26

Hallo Luc,

merci für die versuchte Aufklärung - werde mich mal durchkämpfen um sie zu verstehen.

Gruß
Thomas


  

Betrifft: AW: ...habe das Makro verkürzt hier reingestellt... von: Hajo_Zi
Geschrieben am: 13.01.2010 10:23:25

Hallo Thomas,

warum ist der Beitrag offen. Dazu lese ich nichts in Deinem Beitrag.

GrußformelHomepage


  

Betrifft: AW: ...habe das Makro verkürzt hier reingestellt... von: Thomas
Geschrieben am: 13.01.2010 10:49:08

Hallo Hajo,

dachte das evtl. jemand noch eine Idee hat wie ich die Zuweisung der 386 kat_ids zu den verschiedenen Zellen in der Spalte AL hin bekomme.

Bis ich das von Luc erklärte verstehe bzw. umgesetzt habe dauerts a bisserl :)

Gruß
Thomas


  

Betrifft: AW: Werte zuweisen von: Rudi Maintaire
Geschrieben am: 13.01.2010 12:55:06

Hallo,
was ist Arbeitsspeicher3891 etc? eine Variable?
Wie wird ZUWEISUNG belegt?

Gruß
Rudi


  

Betrifft: AW: Werte zuweisen von: Thomas
Geschrieben am: 13.01.2010 13:02:44

Hallo Rudi,

die Spalte AL = Zuweisung wird mit Werten aus fünf verschiedenen Spalten gefüllt.

Dieser Wert ist dann der Wert der den einzelnen Kat-IDs ( 1 - 386 ) zugeordnet werden soll.

Gruß
Thomas


Beiträge aus den Excel-Beispielen zum Thema "Werte zuweisen"