PDA

Vollständige Version anzeigen : Mehrspaltige Inputbox?


KeinPlanVonVBS
18.03.2009, 07:40
Hallo zusammen,

bei mir ist mein Name Programm, ich habe KEINE Ahnung von VB, muss aber ein Problem lösen. Wir lesen per VBS/Inputbox eine Excel-Liste aus, welche etwa 148 Zeilen hat. Der user soll die richtige Zeile auswählen und unter der Liste in das Eingabefeld eingeben. Soweit, so gut, das funktioniert auch.

Was aber extrem nervig ist: die Liste in der Inputbox rennt bei 148 Excel-Zeilen (= Listeneinträgen) natürlich unten aus dem Bild raus. Also: wie kriege ich diese Liste in der Inputbox mehrspaltig angezeigt, so dass alle Einträge auf einen Schlag sichtbar sind? Wenn mehrspaltig nicht geht, dann vielleicht scrollen?

Dies ist unser aktueller Code:

Sub Main
' Excel öffnen
Set ExcelSheet = CreateObject("Excel.Sheet")
ExcelSheet.Application.Visible = True
ExcelSheet.Application.Workbooks.Open "V:\Daten.xls"
'bei neuen Produkten Endzeile vergrößern
startzeile=3
endzeile=148
abfrage=0

'Auflistung der vorhandenen Systeme
for i=startzeile to endzeile
system=ExcelSheet.Application.Cells(i,1).Value
if len(i)=1 then
aufstellung=aufstellung & " "& i & " "& system &CHR(10)
else
aufstellung=aufstellung & i & " "& system &CHR(10)
end if
'msgbox(system)
next
while abfrage>endzeile or abfrage<startzeile
abfrage=int(inputbox(aufstellung,"Typenschild"))
wend
'msgbox (abfrage)

Bitte um Hilfe... und denkt dran, ich hab KEINE Ahnung davon sondern hangel mich nur so durch :-(

Vielen Dank,
Tini

KeinPlanVonVBS
18.03.2009, 13:07
Äh, hallo? Könnte ich vielleicht wenigstens irgendeine Reaktion auf mein posting bekommen? Falsches Forum? Frage zu blöd um sie zu beantworten? Problem unklar? Keine Zeit um mich mit solchen Kindereien aufzuhalten? Etikette nicht eingehalten? Falls dem so ist, entschuldige ich mich jetzt schon mal :-(

Hat denn wirklich niemand ne Idee? *seufz*
Tini

wohli75
18.03.2009, 14:59
Hi Tini,

wenn ich dein Code richtig verstehe liest du in eine Variabe verschiedene Daten ein, mit einen Zeilenvorschub?
Würde ein vllt. in einen Formular ein Kombinations- / Listenfeld anlegen und dieses dann mit den Inhalt der Tabelle füllen. Könntest dann auch die Arbeit sparen die Endzeile zu erweitern im Code, wenn du das Feld solange füllen lässt bis leer.
Dann hättest du aber erst die Werte scrollbar und weiter? Sollen dann in der dazugehörigen Spalte Werte geändert werden?

Gruß Dirk

.........................................................
*auch nur kleiner VBA Bastler :rolleyes: *

jinx
18.03.2009, 15:54
Moin, Tini,

man könnte immer 5 Einträge in einer Zeile manchen, bevor die nächste genommen wird (dann benötigst Du aber neben der Zeile auch die Position) - ich würde die Verwendung einrr UserForm oder einer in eine Tabelle eingelassenen Listbox empfehlen, wobei man dort über den ListIndex (startet bei 0 für den ersten Datensatz) die Zeile ermitteln kann. Nachfrage: warum VBS?

wohli75
18.03.2009, 19:34
jo über einen Listindex auch denkbar :)
Kommt dann immer darauf an wie komplex die Listen sind... und in welchen Umfang dann Eingaben erforderlich sind.

Nehme oftmals die Formulare um alle relavanten auf einer Seite oder über Multipage eingeben zu lassen... dann ist man bei größeren Tabellen sicherer das alles da steht, wo es steh'n soll:p

KeinPlanVonVBS
19.03.2009, 07:15
Guten Morgen, endlich ein paar mitleidige Seelen :-) zunächst Danke für eure postings, ich versuche das Problem nochmal etwas aufzudröseln:

Als Vorabinfo: die Software liefert die Vorlagen für Lasergravurmaschinen, nach denen der Laserstrahl ein Werkstück beschriftet bzw. graviert.

Mit einer solchen Lasergravurmaschine sollen zukünftig Typenschilder für die produzierten neuen Lasergravurmaschinen erstellt werden, anstatt diese zu drucken. Auf dem Typenschild stehen eine Menge Daten zu der Maschine, diese stecken in zwei verschiedenen XLS-Dateien, welche von der Software ausgelesen werden müssen, daher VBS, sonst gibt es dafür keine Möglichkeit; die Daten sollen und können nicht jedes Mal händisch eingegeben werden.

Das Ziel der ganzen Aktion ist: der zukünftige Typenschildgraveur soll einfach nur die Datei öffnen uind das VBS ablaufen lassen, dabei bekommt er zwei Inputboxen; eine für jedes XLS-Sheet. Er gibt jeweils in die Eingabefenster die passende Artikelnummer und Seriennummer für die betreffende Maschine ein, die Daten werden gelesen und in die Vorlage kopiert und dann lässt er den Laser laufen, der dann das passende Typenschild graviert. Einigermaßen verständlich erklärt?

Die Inputbox zeigt im Fenster oben die Werte aus der Excel-Liste als ganz profane einspaltige Liste an, darunter ist das Eingabefeld.

So. Das Ganze ist auch soweit fertig, d.h. die Daten werden ausgelesen, die richtigen Daten in die Vorlage gesetzt etc. Solange nur Typenschilder mit kleinen Artikel- und Seriennummern erstellt werden müssen, ist auch alles im grünen Bereich; denn die sind in der Liste innerhalb der Inputbox immer sichtbar. Alles, was in der Excel-Datei unterhalb der Zeile 75 steht, ist aber in der Liste nicht mehr zu sehen, weil's unten aus dem Bild rausläuft. Scrollen geht auch nicht. Und das Eingabefeld muss man sich dazudenken, weil's unterhalb der Liste steht. Also meiner Meinung nach wäre entweder ein Scrollbalken die Lösung- oder eben die Anzeige der Liste in mehr als einer Spalte. Uff.

Bin für Vorschläge dankbar, bitte aber um für Laien verständliche Erklärungen. :o

Nochmal vielen Dank,
Tini