2.3k Aufrufe
Gefragt in Datenbanken von
Hi Forum; Ich versuche mich mal richtig auszudrücken. Ich habe auf einem Server ca 650 Excel Dateien. Die immer 2 Tabellenblätter hat. Die auch immer gleich heißen. Ich möchte jetzt mit Hilfe einer Userform mir diese Tabellen mit einer Listbox sehen. Das habe ich auch schon hinbekommen. Wenn ich die einzelne Tabelle in der Listbox markiere, will ich mit einem Commandbutton das er mir die 2 Tabellenblätter in die geöffnete Excel Datei kopiert bekommen.

Danach möchte ich die Tabellen mit Hilfe weiterer Userformen bearbeiten und danach sollen sie wieder im Server abgelegt werden. Wie müsste in VBA sowas aussehen?

Für Hilfe wäre ich sehr Dankbar.

falls was unklar ist bitte fragen.

mfg Andreas

31 Antworten

0 Punkte
Beantwortet von
Also erstmal vielen dank ,M.O.

soweit alles verstanden und läuft jetzt soweit, jetzt bekomme ich das nächste Problem. Kopfschmerz.

bei den Checkboxen steigt er aus mit debuggen.

und die Comboboxen sind nicht mehr mit den daten gefüllt.

könntest du dir das nochmal anschauen?

um ehrlich zu sein hab ich ein schlechtes gewissen, das du mir so hilfst, und würde gerne was entgegenbringen.

also wenn ich was tun kann lass es mich wissen bitte.

mfg andreas
0 Punkte
Beantwortet von

yes Also mal ein Lob hier lasen

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Andreas,

bzgl. des Füllens der Boxen:

du füllst die Combo- und Textboxen mit

wkbdatei.Worksheets(str_Tabelle).Range("F30")

Die Variable für die Tabelle muss aber strTabelle heißen.

Das Problem mit den Checkboxen kann ich leider nicht nachvollziehen. Kommt da eine Fehlermeldung?

Gruß

M.O.

0 Punkte
Beantwortet von

Kannst du mir mal ein Beispiel schicken-

With Me.ComboBox1
     .AddItem "Name1"
     .AddItem "Name2"
     .AddItem "Name3"
      .Value = "Name1"
End With

so hat es die Compobox auf der Userform angezeigt.

jetzt ist Sie leer.

Ich kann dir mit den variablen leider nicht folgen.

wkbdatei.Worksheets(str_Tabelle).Range("F30")

dachte das ist der Befehl für den eintrag der in der Tabelle?

das hab ich schon umgeschrieben.

zu den Checkboxen kommt der Laufzeitfehler `9`: Index außerhalb des gültigen Bereichs


 

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Andreas,

ich habe mir deine Beispieldatei noch einmal genau angeschaut. Deine Userform4 wird nicht geladen, da Fehler im Initialize-Code sind.

Hier mal der bearbeitete Code:

Private Sub UserForm_Initialize()

'Beschriftung von Label13 ändern
Label13.Caption = "Bearbeiten der Tabelle" & strTabelle

'Hier werden die Combo- un Textboxen mit den Daten aus der geöffneten Datei (wbkdatei) und dem
'ausgewählten Tabellenblatt (strTabelle) gefüllt
With ComboBox1
 .AddItem wkbdatei.Worksheets(strTabelle).Range("F30")
 .ListIndex = 0
End With

TextBox10.Value = wkbdatei.Worksheets(strTabelle).Range("J30")

With ComboBox2
  .AddItem wkbdatei.Worksheets(strTabelle).Range("F33")
  .ListIndex = 0
End With

TextBox3.Value = wkbdatei.Worksheets(strTabelle).Range("E4")
TextBox4.Value = wkbdatei.Worksheets(strTabelle).Range("E7")
TextBox5.Value = wkbdatei.Worksheets(strTabelle).Range("E8")
TextBox6.Value = wkbdatei.Worksheets(strTabelle).Range("E9")
TextBox7.Value = wkbdatei.Worksheets(strTabelle).Range("F15")
TextBox9.Value = wkbdatei.Worksheets(strTabelle).Range("L19")
TextBox8.Value = wkbdatei.Worksheets(strTabelle).Range("L27")
                       
With Me.ComboBox1
     .AddItem "M. Geißler"
     .AddItem "R. Müller"
     .AddItem "A. Becker"
     .ListIndex = 1   '2. Eintrag wird ausgewählt
End With

With Me.ComboBox3
     .AddItem "0000000"
     .ListIndex = 0   '1. Eintrag wird ausgewählt
End With

With Me.ComboBox2
     .AddItem "*Hochregal 1*"
     .AddItem "11A 001 01 01"
     .AddItem "11A 001 01 02"
     .AddItem "11A 001 01 03"
     .AddItem "11A 001 01 04"
     .AddItem "11A 001 01 05"
     .AddItem "11A 001 01 06"
     .AddItem "11A 001 01 07"
     .AddItem "*Ebene 2*"
     .AddItem "11A 001 02 01"
     .AddItem "11A 001 02 02"
     .AddItem "11A 001 02 03"
     .AddItem "11A 001 02 04"
     .AddItem "11A 001 02 05"
     .AddItem "11A 001 02 06"
     .AddItem "11A 001 02 07"
     .AddItem "*Ebene 3*"
     .AddItem "11A 001 03 01"
     .AddItem "11A 001 03 02"
     .AddItem "11A 001 03 03"
     .AddItem "11A 001 03 04"
     .AddItem "11A 001 03 05"
     .AddItem "11A 001 03 06"
     .AddItem "11A 001 03 07"
     
     .AddItem "*Hochregal 2*"
     .AddItem "11A 002 01 01"
     .AddItem "11A 002 01 02"
     .AddItem "11A 002 01 03"
     .AddItem "11A 002 01 04"
     .AddItem "11A 002 01 05"
     .AddItem "11A 002 01 06"
     .AddItem "11A 002 01 07"
     .AddItem "*Ebene 2*"
     .AddItem "11A 002 02 01"
     .AddItem "11A 002 02 02"
     .AddItem "11A 002 02 03"
     .AddItem "11A 002 02 04"
     .AddItem "11A 002 02 05"
     .AddItem "11A 002 02 06"
     .AddItem "11A 002 02 07"
     .AddItem "*Ebene 3*"
     .AddItem "11A 002 03 01"
     .AddItem "11A 002 03 02"
     .AddItem "11A 002 03 03"
     .AddItem "11A 002 03 04"
     .AddItem "11A 002 03 05"
     .AddItem "11A 002 03 06"
     .AddItem "11A 002 03 07"
     
     .AddItem "*Hochregal 3*"
     .AddItem "11A 003 01 01"
     .AddItem "11A 003 01 02"
     .AddItem "11A 003 01 03"
     .AddItem "11A 003 01 04"
     .AddItem "11A 003 01 05"
     .AddItem "11A 003 01 06"
     .AddItem "11A 003 01 07"
     .AddItem "*Ebene 2*"
     .AddItem "11A 003 02 01"
     .AddItem "11A 003 02 02"
     .AddItem "11A 003 02 03"
     .AddItem "11A 003 02 04"
     .AddItem "11A 003 02 05"
     .AddItem "11A 003 02 06"
     .AddItem "11A 003 02 07"
     .AddItem "*Ebene 3*"
     .AddItem "11A 003 03 01"
     .AddItem "11A 003 03 02"
     .AddItem "11A 003 03 03"
     .AddItem "11A 003 03 04"
     .AddItem "11A 003 03 05"
     .AddItem "11A 003 03 06"
     .AddItem "11A 003 03 07"
     .Value = "Lagerplatz"
End With
     
    'Datum in Textbox10 schreiben
    TextBox10.Value = Date

End Sub

Schau mal, ob es jetzt besser funktioniert.

Gruß

M.O.

0 Punkte
Beantwortet von
Leider nein,

Combobox 1,2 und 3 und TextBox 10 immer noch leer in der UserForm 4

mfg Andreas
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Andreas,

ich kann dazu nur sagen, dass bei meiner Testdatei das Füllen klappt:

Hier die bearbeitete Beispieldatei: Download

Gruß

M.O.

0 Punkte
Beantwortet von
Hi, M.O.

Ich habe dein Skript eingefügt, und was soll ich sagen es funzt.

Danke dafür,

Die andere UserForm versuche ich mal selber.

Eine frage habe ich noch.

.Worksheets(strTabelle).Range("F15") = TextBox7.Value

Wenn ich das jetzt gespeichert habe soll es beim nächsten mal wenn ich die UserForm öffne die TextBox Leer sein, geht das auch Irgendwie? Ich meinte ich habe das schon mal gemacht aber mir raucht gerade der Kopf.

und seh vor lauter Bäumen den Wald nicht mehr.

Ich hoffe es ist ok das ich mich wieder an Dich wende wenn ich ein Problem habe.

Ich kann dir gerade nicht genug danken.

Mfg Andreas
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Andreas,

wenn eine z.B. eine Textbox einmal gefüllt werden soll, ein anderes Mal aber nicht, dann musst du das über eine IF-Abfrage oder einen Marker lösen.

Wenn du das Füllen der Textbox z.B. davon abhänging machen willst, ob die Zelle F15 gefüllt ist, dann fülle die Textbox mittels einer IF-Abfrage:

If wkbdatei.Worksheets(strTabelle).Range("F15") = "" Then TextBox7.Value = "Testeintrag"

und seh vor lauter Bäumen den Wald nicht mehr.

Dann ist es besser, mal etwas anderes zu machen und später an dem Projekt weiter zu arbeiten (weiß ich aus eigener Erfahrung wink).

Gruß

M.O.

0 Punkte
Beantwortet von
dies geht mit userplatform 4
...