Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1076to1080
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

Add In Daten

Add In Daten
08.06.2009 14:07:08
AnRo
Hallo zusammen,
"ich" habe jetzt ein Programm erstellt, welches mir nach einer Mehrfachauswahl in einer ComboBox das SaveAs Fenster oeffnet und einen Dateinamenvorschlag macht. Soweit funktioniert auch alles.
Dieses Programm soll jetzt mehreren Usern als AddIn zur Verfuegung gesetellt werden, allerdings bezeiht sich das vb auf ein Tabellenblatt. Bei dem AddIn ist die ComboBox dann leer, da die Daten in einer anderen Excel Datei liegen.
Wie kann ich die Datenauswahl unabhaengig machen und als AddIn benutzen.
Vielen Dank fuere eure Hilfe,
Andreas

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Grand Central Station owT
08.06.2009 14:15:34
Rudi
Naja, GCS würde ich nicht sagen, da ich...
10.06.2009 01:31:52
Luc:-?
...glaube, ungefähr zu erahnen, was gemeint sein könnte, Rudi.
Andreas, warum ist die ComboBox im AddIn leer? Da ein echtes AddIn nicht angezeigt wird, kannst du seine Blätter nur als Hilfsspeicher sinnvoll nutzen. Ich gehe deshalb davon aus, dass sich die ComboBox auf einem UserFormular des AddIns befindet. Dieses sollte sich dann schon auf die Datei mit den Daten beziehen. Falls das relativ-dynamisch (je nach Arbeitsplatz) ist, musst du entweder mit vorgegebenen Nutzer-Datei-Listen arbeiten oder die Nutzer das angeben lassen (könnte bei dem von dir angegebenen Level evtl schwer wdn!). Außerdem sollte die jeweilige Datendatei dann auch offen sein.
Du wirst dich ja wohl nicht mit ThisWorkbook.Sheets(name|index) auf das AddIn bezogen haben, was oft der Fehler ist...!? Würde ja auch keinen Sinn machen!
Aber du siehst hieran ja wohl, dass es dich nicht weiterbringt, wenn wir hier alles erraten müssen... :-<
Wenn du eine weiterführende AW willst, musst du schon etwas mehr zeigen, sonst wird deine Frage zugunsten verständlicherer schlicht ignoriert!
Gruß Luc :-?
Anzeige
AW: Naja, GCS würde ich nicht sagen, da ich...
10.06.2009 12:55:16
AnRo
Hallo Luc,
vielen Dank fuer deine Antwort. Damit das raten ein Ende hat, anbei mein Quelltext. Wahrscheinlich habe ich den Fehler mit "ThisWorkbook.Sheets" gemacht, jedoch weiss ich nicht, wie ich dies loesen kann. Alle Leute haben zugriff auf einen zentralen Server, wo ich eine Datei ablegen koennte.
Option Explicit
Dim aRow As Long
Dim col As New Collection
Dim iRow, x As Long
Dim strFileName As Long

Private Sub ComboBox1_Change()
ComboBox2.Clear
ComboBox3.Clear
On Error Resume Next
For iRow = 2 To aRow
col.Add Cells(iRow, 2), Cells(iRow, 2)
If Err = 0 And Cells(iRow, 1) = ComboBox1.Value Then
ComboBox2.AddItem Cells(iRow, 2)
Else
Err.Clear
End If
Next iRow
On Error GoTo 0
For x = col.Count To 1 Step -1
col.Remove (x)
Next x
End Sub



Private Sub ComboBox2_Change()
Me.ComboBox3.Clear
On Error GoTo Fehler
For iRow = 2 To aRow
If Cells(iRow, 2) = Me.ComboBox2.Value Then
With Me.ComboBox3
.AddItem Cells(iRow, 3)
.List(.ListCount - 1, 1) = iRow
End With
End If
Resume01:
Next iRow
Fehler:
With Err
If .Number  0 Then
Resume Resume01
End If
End With
End Sub



Private Sub ComboBox3_Change()
Dim wks As Worksheet, strDateiName As String
Set wks = ActiveSheet
With Me.ComboBox3
'Dateiname aus Spalte D (4) einlesen
strDateiName = wks.Cells(Val(.List(.ListIndex, 1)), 4)
Application.Dialogs(xlDialogSaveAs).Show strDateiName & "_" & TextBox1 & "_" & Format( _
Now, "YYMM") & "_rev"
End With
End Sub



Private Sub CommandButton1_Click()
Application.Dialogs(xlDialogSaveAs).Show "c:\Meine Abrechnung\LustigerDateiName.xls"
End Sub



Private Sub Label2_Click()
End Sub



Private Sub TextBox1_Change()
End Sub



Private Sub UserForm_Initialize()
aRow = IIf(IsEmpty(Range("A65536")), Range("A65536").End(xlUp).Row, 65536)
On Error Resume Next
For iRow = 2 To aRow
col.Add Cells(iRow, 1), Cells(iRow, 1)
If Err = 0 Then
ComboBox1.AddItem Cells(iRow, 1)
Else
Err.Clear
End If
Next iRow
On Error GoTo 0
End Sub


Vielen Dank fuer die Hilfe.
Andreas

Anzeige
Den Standardfehler hast du zwar nicht in...
11.06.2009 16:21:04
Luc:-?
...dieser Form begangen, Andreas,
denn du liest in ComboBox3_Change schon das aktuelle Workbook ein, aber in den anderen und beim UserForm_Initialize schreibst du immer nur Range bzw Cells ohne näheren Bezug (mit nachfolgendem . voranzustellen). Das wird dann vom VB-Interpreter als Bezug auf das aktuelle Blatt der Code-Standort-Mappe interpretiert, entspräche somit ThisWorkbook.Range(...)! Und das ist falsch, wenn die Daten aus einer anderen Mappe kommen sollen. Die musst du dann schon explizit angeben, ähnlich wie das ja auch in ComboBox3 geschieht. Wenn das immer die gleiche Datei ist, die geöffnet sein muss (!), kannst du ja eine weitere Globalvariable (in einem normalen Modul wie es der Makrorecorder anlegt, nicht in den Klassenmodulen vom Typ Document wie die ob.gez. Ereignisprozeduren) vereinbaren, die diese Mappe referenziert (z.b. Dim datenblatt As Worksheet), so dass du in den Prozeduren nur noch datenblatt.Range(...) schreiben müsstest. Dazu muss dann diese Variable im Workbook_Open-Ereignis des AddIns gesetzt wdn, Set datenblatt = Workbook(...).Sheets(...). Wenn Excel durch Öffnen dieser Datei gestartet wird und das AddIn per AddIn-Manager in das Excel des Anwenders eingebunden wurde, müsste das auch fkt.
Ansonsten kann dieses Blatt natürlich auch ohne Globalvariable in jeder Proz direkt angesprochen wdn. Die Variante mit Globalvariable bedeutet u.U. nur weniger Korrekturaufwand, falls sich mal der Dateiname ändert.
Gruß Luc :-?
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige