• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Sortieren Sie Strings mit VBA und Vlisp

  • Ersteller Ersteller ghirosoft
  • Erstellt am Erstellt am

ghirosoft

Guest
Bye to all,

Ich muss die Liste der Schichten eines elektrischen Schaltplans, bestehend aus der Schicht Typ 1,2,3,5,10,12a,13,15,16a usw. wiederherstellen.
Eigentlich erholt sich diese Liste in vba, aber ich versuche mit vlisp.
mit vba passend zur Liste zu einer Listbox zeigt mir 1,10,12a,13,15,16a,2,3,5.
Ich versuche genau mit Rutschen, aber nicht ganz, weil es Briefe nach der Nummer gibt, halte ich sie als Strings und bestelle die Liste mit vl-sort, aber es gibt mir nicht die richtige Progression. Ich bin wieder auf der zweiten Liste.
mit vba Ich habe eine Funktion, um Zahlen zu bestellen, aber nicht mit Buchstaben. Ich wollte auch etwas herunterladen, das ich gefunden habe, aber nichts. Muss ich mit einer Listenansicht versuchen, dass ich weiß, dass es die Bestellung direkt auf dem Eigentum des Objekts hat?

in vba möchte ein bisschen Code ändern.
oder verliere ich auf einem Glas Wasser?

Danke.
 
txt="000" & Schicht
wenn rechts(Schicht,1)
nach dem neuen Träger bestellen und mit seinem Index die Basis ein bestellen.

wenn es funktioniert, wenn es nicht klar ist, lassen Sie mich wissen, dass ich ein Beispiel stelle.

Bye
 
Bye to all,

Ich muss die Liste der Schichten eines elektrischen Schaltplans, bestehend aus der Schicht Typ 1,2,3,5,10,12a,13,15,16a usw. wiederherstellen.
Eigentlich erholt sich diese Liste in vba, aber ich versuche mit vlisp.
mit vba passend zur Liste zu einer Listbox zeigt mir 1,10,12a,13,15,16a,2,3,5.
Ich versuche genau mit Rutschen, aber nicht ganz, weil es Briefe nach der Nummer gibt, halte ich sie als Strings und bestelle die Liste mit vl-sort, aber es gibt mir nicht die richtige Progression. Ich bin wieder auf der zweiten Liste.
mit vba Ich habe eine Funktion, um Zahlen zu bestellen, aber nicht mit Buchstaben. Ich wollte auch etwas herunterladen, das ich gefunden habe, aber nichts. Muss ich mit einer Listenansicht versuchen, dass ich weiß, dass es die Bestellung direkt auf dem Eigentum des Objekts hat?

in vba möchte ein bisschen Code ändern.
oder verliere ich auf einem Glas Wasser?

Danke.
mit vba können Sie mit Strcomp fortfahren

unter einem Beispiel von boubleshort, um genau Zahlen im String-Format mit Buchstaben innen zu bestellen.

im Beispiel unten "letzte" ist das Ende des Arrays, in Excel funktioniert die Sache richtig. Versuchen Sie es zu sehen.
Code:
 für i = 1 bis ultima - 1
für j = 1 bis ultima - 1
a = activesheet.range("a" & j). Wert
b = activesheet.range("a" & j + 1).
konfronto = strcomp(a, b)
wenn konfrontiert > 0)
temp = activesheet.range("a" & j). Wert
activesheet.range("a" & j).value = b
activesheet.range("a" & j + 1).value = temp
Ende
nächstes j
Ich bin der
 
Verdammt, Leute!
Danke.
Ich habe versucht, in Lisp zu reordern und es funktioniert, sobald ich kann und hoffe bald werde ich versuchen, was Sie in vba veröffentlicht.
Danke noch mal.
 
Hallo Form,
So habe ich es versucht.
Wenn ich das tue
Last = 10
pippo = Array("", "1", "2", "1a", "5", "3", "10", "12a", "12", "11", "15")

für i = 1 bis zuletzt - 1
für j = 1 bis 1
a = pip(j)
b = pip(j + 1)
Vergleich = strcomp(a, b)
wenn Vergleich > 0)
temp = pippo(j)
pippo(j) = b
pippo(j + 1) = temp
Ende

Ich bin der
Er beantwortet:

"1" "10" "11" "12a" "15" "1a" "2" "3" "5"
während ich das Array " ausziehe (dann Index 0)

irgendwann sagt mir, dass aus dem Bereich in b = pippo(j + 1)... richtig.
Ich habe viele Beweise zwischen Array und dem letzten gemacht.
Ich sah jedoch, dass Strcomp der einzige ist, um alphanumerische Daten zu überprüfen.

x rpor66..
Ich glaube, ich verstehe Ihr Beispiel, auch wenn ich es nicht versuche. Wenn Sie zufällig das Beispiel unter der Hand haben und die Plätze würden mehr auf den Safe gehen.

Danke!
 
Code:
öffentlichkeit sub ordina()

dim pippo als Variante
dim pippo1 als Variante

Dim i als ganze Zahl
Dim Index als String

pippo = Array("10", "12", "14a", "14", "6", "13", "1", "3", "2", "4", "5")
pippo1 = pippo

für i = lbound(pipe) zu ubound(pipe)
für j = lbound(pipe) zu ubound(pipe) - 1


wenn len(pippo(j)) = 1 dann index = " entsprechend der Art des Strings 2 für xxx
wenn len(pippo(j)) = 2 dann index = " entsprechend der Art des Strings 1 für xx

a = Index & pippo(j)

wenn len(pippo(j + 1)) = 1 dann index = " gemäß String Typ 2 für xxx
wenn len(pippo(j + 1)) = 2 dann index = " basierend auf der Art des Strings 1 für xx

b) Index & pip(j + 1)

Vergleich = strcomp(a, b)
wenn Vergleich > 0)
temp = pippo(j)
pippo(j) = pippo(j + 1)
pippo(j + 1) = temp
Ende
♪
Ich bin der

Pisgbox (pippo1(0) & pippo1(1) & "-" & pippo1(2) & "-" & pippo1(3) & "-" & pippo1(4) & "-" & pippo1(5) & "-" & pippo1(6)" & pippo1(7) & pippo1(7) & pippo1(7)

Ende
ok jetzt es funktioniert, hatte ich mit Werten versucht, die die gleiche Länge hatten, nur verwenden Sie den Make-up-Index gesetzt 1 oder zwei Räume nach der Länge. so wird der Vergleich bei gleicher Längensaite vorgenommen.

Es wäre nur genug, um ein vorheriges Lesen des Arrays zu machen, um die maximale Länge zu bestimmen und entsprechend die Leerzeichen in das Lesen setzen.
 
Dank der Verfügbarkeit.
Aber wenn das Array so wird:

öffentlichkeit sub ordina()

dim pippo als Variante
dim pippo1 als Variante

Dim i als ganze Zahl
Dim Index als String

"pippo = Array("10", "12", "14a", "14", "6", "13", "1", "3", "2", "4", "5"
pippo = Array("10", "12", "14a", "14", "6", "13", "1", "3", "2", "4", "5", "2a")

pippo1 = pippo

für i = lbound(pipe) zu ubound(pipe)
für j = lbound(pipe) zu ubound(pipe) - 1


wenn len(pippo(j)) = 1 dann index = " entsprechend der Art des Strings 2 für xxx
wenn len(pippo(j)) = 2 dann index = " entsprechend der Art des Strings 1 für xx

a = Index & pippo(j)

wenn len(pippo(j + 1)) = 1 dann index = " gemäß String Typ 2 für xxx
wenn len(pippo(j + 1)) = 2 dann index = " basierend auf der Art des Strings 1 für xx

b) Index & pip(j + 1)

Vergleich = strcomp(a, b)
wenn Vergleich > 0)
temp = pippo(j)
pippo(j) = pippo(j + 1)
pippo(j + 1) = temp
Ende

Ich bin der

Pisgbox (pippo1(0) & pippo1(1) & "-" & pippo1(2) & "-" & pippo1(3) & "-" & pippo1(4) & "-" & pippo1(5) & "-" & pippo1(6)" & pippo1(7) & "

Ende

verifizieren Sie sich das Ergebnis.
 
Code:
öffentlichkeit sub ordina()

dim pippo als Variante
dim pippo1 als Variante
dim a, b als String
dim temp als String
dim i, x, j, y als ganze Zahl

pippo = Array("2a", "10", "12", "14a", "14a", "13", "1", "3", "2", "4", "5", "6")
pippo1 = pippo

für i = lbound(pipe) zu ubound(pipe)
für j = lbound(pipe) zu ubound(pipe) - 1

a = pip(j)
b = pip(j + 1)

wenn asc(right(a, 1)) > 65 dann a = mid(a, 1, len(a) - 1)
wenn asc(rechts(b, 1)) > 65 dann b = Mitte(b, 1, len(b) - 1)


wenn val(a) > val(b) dann
temp = pippo(j)
pippo(j) = pippo(j + 1)
pippo(j + 1) = temp
Ende
♪
Ich bin der

Pisgbox (pippo1(0) & pippo1(1) & "-" & pippo1(2) & "-" & pippo1(3) & "-" & pippo1(4) & "-" & pippo1(5) & "-" & pippo1(6)" & pippo1(7) & "

Ende
Okay, also Befehle, aber Sie haben keine Kontrolle, wenn Nummer 2 vor 2a ist, wenn das nicht so ein Problem löst.

Ich hatte nicht viel Zeit zu "spielen", so dass es vielleicht eine passendere Methode gibt!!!
 
Ich versuchte und tatsächlich nicht in Ordnung 2 mit 2a,
Jedoch, zurück zur Funktion, die "strcomp" verwendet, wenn Sie diese Tests gibt Ihnen korrekt 1 oder -1 je nach Vergleich.

pippo = strcomp("002", "02a", vbtextcompar)
pippo = strcomp("02b", "02a", vbtextcompar)
pippo = strcomp("002", "02a", vbtextcompar)

Nun frage ich mich, warum finden wir uns in der Funktion zum Beispiel der 2. am Ende? ?
Ich frage dich nicht.

mal von vba starten Sie die Vlips-Funktion, die richtig bestellt und dann die Array-Variable wiederherzustellen.

Danke noch mal.
 
Tut mir leid, dass ich zu spät bin.
die beigefügte Datei und ein Excel-Blatt, Ich habe nicht vba für autocad, aber es ist gleich.
durch Öffnen des Blattes in der Spalte auf die zu bestellenden Werte, drücken Sie den Reorder-Button, und in Spalte b werden die bestellten Werte kopiert.

in dem Formular finden Sie 2 Unterteile, derjenige, der Sie bestellt, der Anruf, indem Sie den Träger zu bestellen, und die Routine bestellt Sie den Träger selbst.

Bye
 

Anhänge

die Verzögerung???? Ja!
Ich habe es versucht:

privater Sub-Befehlbutton4_click()

Vektor = Array("1", "1b", "1a", "3", "5", "10a", "10", "11", "20b", "20a", "22", "2")


dim a als Zeichen
Dim i als ganze Zahl
Dim j als ganze Zahl
Dim min als ganze Zahl
dim max als ganze Zahl
dim txt1 als String
dim txt2 als String

min = lbound(vector)
max = ubound(vector)
für i = min bis max
für j = i bis min + 1 Schritt -1
txt1 = rechts("0000" & Vektor(j - 1), 5)
txt2 = rechts("0000" & Vektor(j), 5)
wenn rechts(txt1, 1) < "a" dann txt1 = rechts(txt1 & "0", 5)
wenn rechts(txt2, 1) < "a" dann txt2 = rechts(txt2 & "0", 5)
wenn txt1
a = Träger (j - 1)
Träger(j - 1) = Träger(j)
Träger(j) = a
Ende

Ich bin der

Ende


Es macht Spaß.
Ich glaube, es gibt kein Problem, wenn ich es in meine Routine gesteckt habe.
Es ist eine Befürwortung für geschichtete elektrische Schaltpläne, aber es dient uns auch als Unternehmen, dieses Update.
wenn ich die Öffentlichkeit auf meiner Website platziert habe und den Link hier im Forum schreiben.
Ich denke, es wird mehr als jemand interessiert an dieser Reihenfolge: Lächeln:
Vielen Dank!!
 
Tut mir leid, dass ich zu spät bin.
die beigefügte Datei und ein Excel-Blatt, Ich habe nicht vba für autocad, aber es ist gleich.
durch Öffnen des Blattes in der Spalte auf die zu bestellenden Werte, drücken Sie den Reorder-Button, und in Spalte b werden die bestellten Werte kopiert.

in dem Formular finden Sie 2 Unterteile, derjenige, der Sie bestellt, der Anruf, indem Sie den Träger zu bestellen, und die Routine bestellt Sie den Träger selbst.

Bye
wie immer toll. Ich ging mit dem Boublesort in die Nähe, aber ich habe deinen Präfix kikka verpasst... toll

Ich erlaube mir, eine kleine Kontrolle hinzuzufügen, um keine Probleme auf der Größe der zu bestellenden Strings zu haben, damit Sie haben können, welche Länge Sie wollen und nicht nur unter 5 Ziffern.
Code:
sub ordina(byref vettore() als String)

dim a als Zeichen
Dim i als ganze Zahl
Dim j als ganze Zahl[COLOR="Red"][B]    dim x as integer
    dim y as integer
    dim maxl as integer
    dim maxlen as integer[/B][/COLOR]Dim min als ganze Zahl
dim max als ganze Zahl
dim txt1 als String
dim txt2 als String
Dim maxl als ganze Zahl
dim maxlen als ganze Zahl

min = lbound(vettore())
max = ubound(vettore()

 [COLOR="Red"][B] für x = min bis max
maxl = len(vettore(x))
wenn max. > maxlen dann maxlen = maxl
Nächste x


dim prefisso als String
prefisso = ""

für y = 1 bis maxlen
prefisso = prefisso & "0"
Nächste y[/B][/COLOR]für i = min bis max
für j = i bis min + 1 Schritt -1
 [COLOR="red"][B] txt1 = rechts(prefisso & vettore(j - 1), maxlen)
txt2 = rechts(prefisso & vettore(j), maxlen)
wenn rechts(txt1, 1) < "a" dann txt1 = rechts(txt1 & "0", maxlen)
wenn rechts(txt2, 1) < "a" dann txt2 = rechts(txt2 & "0", maxlen)[/B][/COLOR]Txt1 > txt2
1)
vetries - 1) = vetritor
= a
Ende, wenn
mxt nxt
mxt i
Endteil
in rot die Änderungen des Originals, bitte rpor66 vergessen, wenn ich ein Kabel geschrieben.
 
für e = 1 bis maxlen prefisso = prefisso & "0" nächstes und
Sie können es durch Präfix ersetzen = string(maxlen,
"0")

zu beachten, dass in jedem Fall diese Routine dient
Auftragslisten, die durch optional gefolgte Zahlen gebildet werden
per Brief Zahlen über 4 Ziffern finden
bedeutet Listen von 1÷9999.

Bye
 
größere Nummern von 4 Ziffern finden
bedeutet Listen von 1÷9999.
[/B][/COLOR]
bhè Sie haben Recht, es ist, dass ich versuchte die rutine für eine andere Sache und ich bemerkte die Grenze der Anzahl der Zeichen, so dass Sie nicht Probleme haben und daher ist es allgemeiner anwendbar.

Code:
Beispiel, um gleiche Positionen in einem separaten Stück zu bestellen und/oder zu ordnen
um dann zu summieren und die Summen zu erhalten.
ANHANG
ANHANG
ANHANG
ANHANG
ANHANG
ANHANG
ANHANG
ANHANG
01.
01.
- Ja.
- Ja.
- Ja.
ANHANG
ANHANG
ANHANG
ANHANG
ANHANG
ANHANG
ANHANG
ANHANG
ANHANG
040a
040a
040a
040b
040b
040b
0400a
0400b
aber wie üblich sind Sie entschlossen, diese Hänge zu lösen!
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben