Thema Datum  Von Nutzer Rating
Antwort
Rot UserForm-Verwaltungstool
13.11.2019 08:48:40 Alex
NotSolved

Ansicht des Beitrags:
Von:
Alex
Datum:
13.11.2019 08:48:40
Views:
788
Rating: Antwort:
  Ja
Thema:
UserForm-Verwaltungstool

Moin zusammen,

ich habe ein Verwaltungstool in VBA erstellt und dies funktioniert auch super. Bisher ist es jedoch so, dass das Tool nur in der Arbeitsmappe funktioniert, in der man sich gerade befindet. Ebenfalls werden alle Spalten von dem Tool berücksichtigt. Mein Ziel ist jedoch, dass das Tool auf eine Arbeitsmappe zugreift welche auf einem Server für jeden zugänglich ist und nur bestimmte Spalten angesteuert werden. Kann mir da jemand helfen? 

Nochmal die Ziele in der Kurzform:

- Daten sollen aus anderer Arbeitsmappe bezogen werden (am besten ohne das diese geöffnet werden muss)

- Es sollen nicht alle Spalten sondern nur bestimmte zur Datenverarbeitung angesteuert werden.

 

Hier ist der Code für das gesamte Tool:

Private Sub Button_Abbrechen_Click()

Unload Me

End Sub

Private Sub Button_ändern_Click()

Dim lngZeile As Long
Dim i As Integer

'Zuerst prüfen ob ein Datensatz im Listenfeld markiert ist

If Me.ListBox1.ListIndex >= 0 Then
  lngZeile = Me.ListBox1.Column(7, Me.ListBox1.ListIndex)
  For i = 2 To 12
    tbl_Artikel.Cells(lngZeile, i).Value = Me.Controls("TextBox" & i).Value
  Next i
  
'Zurückschreiben in die ListBox

For i = 1 To 6
  Me.ListBox1.Column(i, Me.ListBox1.ListIndex) = Me.Controls("TextBox" & i + 1).Value
Next i

Else
 MsgBox "Bitte markieren Sie einen Datensatz im Listenfeld!"
 
End If


End Sub

Private Sub Button_Leeren_Click()

Dim obj As Object

    For Each obj In Me.Controls
        
      If TypeName(obj) = "TextBox" Then
        obj.Value = ""
      End If
      
    Next obj
    
'ListBox leeren
Me.ListBox1.Clear

End Sub

Private Sub Button_Suchen_Click()

Dim lngZeile As Long
Dim lngZeileMax As Long
Dim i As Integer

Me.ListBox1.Clear

With tbl_Artikel

 lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
 For lngZeile = 3 To lngZeileMax
 If InStr(.Cells(lngZeile, 1).Value, Me.TextBox1.Value) > 0 Then
    
    Me.ListBox1.AddItem .Cells(lngZeile, 1).Value           'Daten aus Zellen holen und in ListBox anzeigen
    Me.ListBox1.Column(1, i) = .Cells(lngZeile, 2).Value
    Me.ListBox1.Column(2, i) = .Cells(lngZeile, 3).Value
    Me.ListBox1.Column(3, i) = .Cells(lngZeile, 4).Value
    Me.ListBox1.Column(4, i) = .Cells(lngZeile, 5).Value
    Me.ListBox1.Column(5, i) = .Cells(lngZeile, 6).Value
    Me.ListBox1.Column(6, i) = .Cells(lngZeile, 7).Value
    Me.ListBox1.Column(7, i) = lngZeile
    i = i + 1
    
    End If
  
  Next lngZeile
  
  End With
  
End Sub



Private Sub ListBox1_Click() 'Per Klick die Daten aus der ListBox in das Formular übertagen

Dim lngZeile As Long
Dim i As Integer

lngZeile = Me.ListBox1.Column(7, Me.ListBox1.ListIndex)

For i = 1 To 12
  Me.Controls("TextBox" & i).Value = tbl_Artikel.Cells(lngZeile, i).Value
Next i



End Sub

Private Sub UserForm_Initialize()

Dim i As Integer
Dim wks As Worksheet
Set wks = ThisWorkbook.Worksheets("tbl_Artikel")

With wks


'Überschrift der Userform aus Zelle A1 holen
Me.Caption = .Range("A1").Value

For i = 1 To 12
    Me.Controls("Label" & i).Caption = .Cells(2, i).Value
Next i

'Überschrift der Listbox aus Tabelle holen
For i = 1 To 12
    Me.Controls("Label" & i + 12).Caption = .Cells(2, i).Value
Next i

End With

'ListBox erstellen
With Me.ListBox1
    .ColumnCount = 6
    .ColumnWidths = "90;200;75;75;40;40"
End With

'Cursor standardmäßig in die erste Textbox setzen
Me.TextBox1.SetFocus
    
End Sub

 

Vielen Dank schon mal im Voraus für eure Hilfe.

Gruß Alex


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot UserForm-Verwaltungstool
13.11.2019 08:48:40 Alex
NotSolved