Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1092to1096
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
Inhaltsverzeichnis

Wert in Klammer ändern

Wert in Klammer ändern
Ron
Hallo ExcelSpezis
Folgendes Problem steht an....
Hier lese ich alle Zellinhalte einer Spalte aus

'Dim aStrTestnr (Global gelöst)
aStrTestnr = Application.Transpose( _
Range(Cells(1, 3), Cells(Rows.Count, 3).End(xlUp)))
Um so 100 Werte in Zellen abzufüllen müsste ich 100 solche Einträge platzieren

Range("Kategorie").Value = aStrTestKat(4)

Mit einer For Next Schleife möchte ich nun alle Felder abfüllen

For tn = 4 to 100
Range("Kategorie"& tn).Value = aStrTestKat(4)
Next tn
Mein Problem ist wie kann ich auch bei der Variablen aStrTestKat(...) diesen Wert mit dem tn steuern?
Wenn ich das mache erhalte ich die Fehlermeldung
aStrTestKat(tn) = Index ausserhalb des gültigen Bereiches
Danke schon mal für eine Idee
Gruss
Ron
AW: Wert in Klammer ändern
13.08.2009 14:08:56
MichaV
Hallo,
einmal ist es aStrTestnr , und dann wieder aStrTestKat. Kann es schon daran liegen?
Gruß- Micha
AW: Wert in Klammer ändern
13.08.2009 14:46:45
Ron
Hallo Micha
Dein Einwand ist richtig. Habe noch getestet und eigentlich geht es. Aber ich bekommen scheinbar den Fehler weil im entsprechenden Feld ein Wert (Zeichen) ausgelesen wird, dass da so nicht sein darf.
Welches weiss ich noch nicht.
Gruss
Ron
AW: Wert in Klammer ändern
13.08.2009 14:57:19
MichaV
Hei,
kann mir nicht vorstellen das es daran liegt. Auf jeden Fall wäre es schön mal den ganzen Code zu sehen, oder gleich die Beispielmappe bei der es nicht klappt. Aber vielleicht hilft dir ja auch das Lokalfenster :o)
Mir fällt auf dass Du oben mit .End(xlUp) arbeitest, also nicht genau weisst wieviel Elemente eingelesen werden. Unten jedoch willst Du mit 4 to 100 eine genaue Anzahl auslesen. Wenn Du oben nur 80 eingelesen hast, kriegst Du unten den Fehler. Du kannst das vermeiden indem Du mit LBound und UBound arbeitest: For tn = LBound(aStrTestKat) to UBound (aStrTestKat)
Wobei LBound(aStrTestKat) 0 sein dürfte, ich würde es aber konsequenterweise auch hier verwenden.
Gruß- Micha
Anzeige
AW: Wert in Klammer ändern
13.08.2009 15:50:11
Ron
Hoi Micha
Danke für dein Feedback.
Das ist mein Code. Im ExcelSheet habe ich die Zellen einzeln mit einem eindeutigen Namen versehen.
Lustigerweise füllt er mir 11 komplette Sätze ab und dann erscheint der Fehler.
'Abfrage ob sich der Testname ändert wenn ja = Einfügen eines neuen Headers
''''--------Versuch um alles mit einer For -Next Schlaufe zu lösen----------
tn = 0      'aStrTestname(x)
he = 1      'Header
For tn = 5 To 27     'hier erweitern
he = he + 1
strIstTestname = aStrTestname(tn)
If strIstTestname = "" Then
Application.Goto Reference:="Header" & he
Selection.EntireRow.Hidden = True
Else
Application.Goto Reference:="Header" & he
Selection.EntireRow.Hidden = False
Range("Testname" & he).Value = aStrTestname(tn)
End If
Range("Testnummer" & he).Activate
Range("Testnummer" & he).Value = aStrTestnr(tn)
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Range("Kategorie" & he).Activate
Range("Kategorie" & he).Value = aStrTestKat(tn)
Range("Geschaefsfall" & he).Activate
Range("Geschaefsfall" & he).Value = aStrTestGef(tn)
Range("Kontonummer" & he).Activate
Range("Kontonummer" & he).Value = aStrTestKonto(tn)
Range("Partnernummer" & he).Activate
Range("Partnernummer" & he).Value = aStrTestPartner(tn)
Range("Description" & he).Activate
Range("Description" & he).Value = aStrTestDescription(tn)
Range("Result" & he).Activate
Range("Result" & he).Value = aStrTestResult(tn)
Range("PlzOrt" & he).Value = aStrTestPLZ(tn)
Range("GFNr" & he).Value = aStrTestGFnr(tn)
Next tn
Jetz suche ich. Dein Einwand mit LBound und UBound finde ich sehr interessant. Aber kann ich dies einsetzen?
Gruss
Ron
Anzeige
AW: Wert in Klammer ändern
13.08.2009 16:05:15
MichaV
Hallo,
öhm, das macht so keinen Sinn. Wenn Du tn = 5 To 27 schreibst, der Fehler aber schon bei 11 kommt, dann kanns ja nur an den (fehlenden) Daten ab 11 liegen. Also liegt das Problem beim Einlesen, dazu fehlt der Code und die Quelle. Wo genau erscheint der Fehler? Kannst Du nicht die ganze Mappe hochladen?
Gruß- Micha
AW: Wert in Klammer ändern
13.08.2009 16:04:57
Ron
Hallo Micha
Habe die Ursache gefunden warum er plötzlich abbricht. Im Excel-Sheet sind keine Daten in den Feldern. Habe nun ein ALT+255 in diese Zellen eingefügt und dann geht es.
- Gibt es da was wie ich so einen Fall von kein Zeichen" abfangen kann?
Danke und Gruss
Ron
Anzeige
AW: Wert in Klammer ändern
13.08.2009 16:09:01
MichaV
Hallo,
das liegt wohl am .End(xlUp), ich weiss ja nicht wie Du einliest, siehe meine andere Antwort.
Wenn Du leere Zellen einliest gibt es normalerweise keine Probleme. Versuch das mal imm Direktfenster:
range("a1:a5").Clear
a=worksheetfunction.Transpose(range("a1:a5"))
? a(2)
...keine Fehlermeldung. Also liest Du falsch ein.
Gruß- Micha
AW: Wert in Klammer ändern
13.08.2009 16:28:11
Ron
Hallo Micha
Hier mal mein "Versuch" Ist vielleicht nicht ganz "spezi-Like".
Habe die *.xlsm Datei in eine ZIP-Datei gepackt und hochgeladen.
https://www.herber.de/bbs/user/63811.zip
Gruss
Ron
Anzeige
AW: Wert in Klammer ändern
13.08.2009 21:23:07
MichaV
Hallo,
also erstmal alle Achtung, für "VBA nur mit Recorder" hast Du ja schon ne Menge gebastelt. Brauchst Dich nicht zu schämen, wir haben alle mal klein angefangen.
Also, es liegt wie vermutet am Einlesen. Du Fragst jede Spalte einzeln ab, wenn Spalte K aber nur 5 Einträge hat, dann besitzt das Array aStrTestKonto aber auch nur 5 Elemente, obwohl aStrTestnr vielleicht 25 Elemente besitzt. Wenn Du das alles in einer Schleife abfragst, fliegt Du natürlich beim 6. Element von aStrTestKonto raus. Du musst also sicherstellen daß alle Arrays die gleiche Anzahl an Elementen haben. Das machst Du z.B. indem Du die Spalte mit xlUp abfragst, die mit Sicherheit für jeden Datensatz immer einen Wert hat, sowas wie ein Index. Ich denke dafür ist die Spalte C geeignet, denn jeder Eintrag in Deiner Datentabelle hat immer eine Step- Nr. Wenn Du dort die Anzahl der Zeilen ermittels kommst Du auf jeden Fall auf die Anzahl der Datensätze, und die übernimmst Du für alle Arrays:
x = Cells(Rows.Count, 3).End(xlUp).Row 'letzte beschriebene Zeile in Spalte C
aStrTestnr = Application.Transpose( _
Range(Cells(1, 3), Cells(x, 3)))
'MsgBox aStrTestnr(4)
'Spalte D
'Dim aStrTestDescription (Global gelöst)
aStrTestDescription = Application.Transpose( _
Range(Cells(1, 4), Cells(x, 4)))
'MsgBox aStrTestDescription(4)
'Spalte E
'Dim aStrTestResult (Global gelöst)
aStrTestResult = Application.Transpose( _
Range(Cells(1, 5), Cells(x, 5)))
'MsgBox aStrTestResult(4)
Alles klar? Das X musst Du weiter unten in Deiner Schleife weiterverwenden, denn Du weisst ja nicht ob Du 25 oder 87 Daten eingelesen hast:
For tn = 5 To 5 + x +1
oder (gem. meines Vorschlages)
For tn = 5 To 5 + UBound(aStrTestname)
(ich schreibe x+1 weil x bei 1 anfängt, im Array hat das erstes Element aber den Index 0)
Dann noch 2 Tips:
Benutze immer und unter allen Umständen Option Explicit. Muss in jedem Modul ganz oben stehen, setze am besten bei Optionen den Haken bei "Variablendeklaration erforderlich". Kann mich noch erinnern, das ist am Anfang extrem lästig, später aber extrem hilfreich.
Dann zieh Dir mal das hier rein http://www.online-excel.de/excel/singsel_vba.php?f=78
und versuche das nach und nach umzusetzen. Musst ja nicht gleich alles umschreiben, aber wenn Du neu schreibst, dann denke dran.
Viel Erfolg!
Gruß- Micha
Anzeige
AW: Wert in Klammer ändern
14.08.2009 08:00:00
Ron
Hoi Micha
Dank deinem Feedback hat der Tag heute Morgen schon sehr gut begonnen.
Ich werde deine Tipps nun mal genauso umsetzen. Auch das Option Explicit werde ich mir in Zukunft als MUSS merken. Dein Beitrag zu meinem Problem nenne ich eine grosse Hilfe.
Gruss und einen sonnigen Tag wünsche ich
Ron
AW: Danke für die Rückmeldung mT
14.08.2009 08:45:22
Ron
Hallo Micha
Habe deine Tipps bereits umgesetzt und alles läuft wie es sollte. Somit sind die "Fehlermeldungen" behoben.
Danke noch einmal.
Gruss
Ron
Anzeige
AW: Wert in Klammer ändern
13.08.2009 14:36:45
Rudi
Hallo,
hast du wirklich Bereiche, die Kategorie4, Kategorie5, Kategorie6 etc. heißen?
aStrTestKat(tn) = Index ausserhalb des gültigen Bereiches

dann hat das Array nicht so viele Elemente.
Blende das Lokalfenster ein, gehe den Code mit F8 durch und schau dir dabei die Variablen an.
Gruß
Rudi
AW: Wert in Klammer ändern
13.08.2009 14:49:29
Ron
Hallo Rudi
Danke für dein Feedback. Das mit dem Lokalfenster bringt mich Wissensmässig weiter. Wusste gar nicht das es so was gibt.
Gruss
Ron

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige