Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
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

von anderer aktiven Datei <zelle kopiere

von anderer aktiven Datei <zelle kopiere
08.06.2023 14:49:38
susi

Hallo,
ich habe nicht so viel Ahnung von Makros. Ich hoffe es kann mir jemand helfen.
Ich möchte von der im Hintergrund offenen Datei die Zelle C20 in die aktive Datei K34 kopieren.
Im Hintergrund der Name der Datei: z.B. "Hauptlager_Regal_20_Fach_15".xlsm"
Egal welche Datei ich nehme, von der ich kopieren möchte, fängt immer mit "Hauptlager*.xlsm" an.
geht das ?

Gruß susi

55
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: von anderer aktiven Datei <zelle kopiere
08.06.2023 17:12:38
Oberschlumpf
Moin susi,

bevor ich mein Glück versuche, hab ich noch n paar Fragen.

1. Die Datei im Hintergrund, von der du schreibst, ist das die einzige Datei, deren Dateiname mit "Hauptlager..." beginnt?
2. Die aktive Datei von der du schreibst, ist das a) immer die selbe Datei, oder b) kann es sich bei "deiner aktiven Datei" um unterschiedliche Dateien handeln?
Wenn a), dann kann man dir recht einfach helfen, der notwendige Code muss dann einfach in deine einzige aktive Datei geschrieben werden
Wenn aber b), dann müsste man ein AddIn programmieren, auf das alle aktive Dateien Zugriff haben, weil ohne AddIn müsste man dann den Code in - jede einzelne - aktive Datei schreiben

Wenn du mir diese zwei Fragen 1. + 2. beantwortest, und ich dann noch immer eine Lösungsidee habe, dann versuch ich zu helfen.
(zu a) + b) musst du nix schreiben, dient nur zur Erklärung)

Ciao
Thorsten


Anzeige
AW: von anderer aktiven Datei <zelle kopiere
08.06.2023 18:54:12
susi
Guten Abend Thorsten,
zu 1. die Datei fängt immer mit Hauptlager an !
zu 2. die aktive Datei ist vom Namen her immer die
selbe.
Gruß Susi


AW: von anderer aktiven Datei <zelle kopiere
09.06.2023 05:05:59
Oberschlumpf
Hi Susi,

zu 1: ich wollt nich wissen, ob der Dateiname immer mit "Hauptlager" beginnt (DAS hattest du ja schon in deinem Erstbeitrag geschrieben); ich wollt wissen, ob die Hauptlager...-Datei - die einzige geöffnete Datei ist mit dem Namen "Hauptlager..." - es kann ja sein, dass du mehrere Dateien geöffnet hast, z Bsp "Hauptlager...1.xlsm", "Hauptlager...2.xlsm", "Hauptlager...3.xlsm" usw

aber ok, ich versuch trotzdem mal, dir zu helfen
schreib diesen Code - in deiner aktiven Datei - in ein allgemeines Modul:


Sub sbCopyFromHaupt()

    Dim lwbAll As Workbook
    
        For Each lwbAll In Workbooks
            If LCase(Left(lwbAll.Name, 10)) = "hauptlager" Then '"hauptlager" MUSS kleingeschrieben sein
                lwbAll.Sheets(1).Range("C20").Copy Range("K34") 'wenn nicht Sheets(1), dann die 1 in Klammern durch die richtige Zahl ersetzen
                Exit Sub
            End If
        Next
        
End Sub
Beschreibung:
Mein Code überprüft alle geöffneten Excel-Dateien auf ihren Dateinamen.
Sobald bei einer der geöffneten Dateien der Name mit "hauptlager" beginnt...
...wird in Datei "Hauptlager...", in Tabelle1, die Zelle C20 kopiert...
...und in deiner gerade aktiven Datei, in der gerade angezeigten Tabelle in Zelle K34 eingefügt...
...und das Makro wird beendet

Hinweis:
du siehst im Code den Kommentar 'wenn nicht Sheets(1), dann die 1 in Klammern durch die richtige Zahl ersetzen
Ich hatte vergessen zu fragen, aus welchem Tabellenblatt in Datei "Hauptlager" willst du die Zelle C20 kopieren
Im Code hab ich jetzt die erste Tabelle (Sheets(1)) angegeben.
Wenn du aber C20 aus einer anderen Tabelle haben willst, dann änder Sheets(1) um in Sheets(xxx) - ich will sagen, xxx ist die Zahl aus der Reihenfolge aller verfügbaren Tabellenblätter in Datei "Hauptlager...".

Meinen Code kannst du starten, in dem du in deiner aktiven Datei in der Tabelle, wo der Wert nach K34 eingefügt werden soll, einen ActiveX-Button erstellst und im Klick-Ereignis den Namen meines Makros einträgst.

Hilfts?

Ciao
Thorsten


Anzeige
leider Fehler
09.06.2023 15:44:32
susi
Hallo Thorsten,
leider Fehlermeldung hier:
lwbAll.Sheets(1).Range("e13").Copy Range("K30")
laufzeitfehler 1004 copy methode konnte nicht ausgeführt werden.

gruß susi


AW: leider Fehler
09.06.2023 15:56:17
Oberschlumpf
HI Susi,

OHNE deine Bsp-Dateien mit Bsp-Daten in den richtigen Zellen kann ich leider nicht weiterhelfen.
Aber vllt weiß ja Ulf etwas.

Ciao
Thorsten


Danke Thorsten
09.06.2023 16:52:40
susi


AW: von anderer aktiven Datei <zelle kopiere
08.06.2023 18:17:48
Ulf
Hi Susi,
DIe Datei im Anhang kann emthält ein Formular und einen Beispielaufruf und zeigt alle offenen Datei in Liste und zwei vordefinnierte Bereiche als Quelle und Ziel.
Modul und Formular per Drag & Drop in die gewünschte Datei ziehen (Alt+F11 zum Anzeigen) und testen.

hth
Ulf

https://www.herber.de/bbs/user/159505.xlsm


Anzeige
Hallo Ulf, danke schau ich mir morgen an !
08.06.2023 20:16:16
susi


Hallo Ulf...
09.06.2023 15:48:35
susi
Hallo Ulf,
dein Beispiel gefällt mir auch sehr gut.
Ich benötige jetzt allerdings 4 x = 8 Textboxen, da ich bis zu 4 Zellen kopieren muss,
geht dies auch ?

Gruß susi


AW: Hallo Ulf...
09.06.2023 16:19:13
Ulf
Hi Susi
das ist einfach auch von dir zu bewerkstelligen:
ALT+F11
Formular doppelklicken => Editor
ein Textfeld aufziehen=>Textbox3
ins Textfeld den absoluten Quellbereich als Default schreiben (A1=>$A$1)
ein Textfeld aufziehen=>Textbox4
ins Textfeld den absoluten Zielbereich als Default schreiben
...
DIe Übergabe kannst du aus dem bestehenden Code entnehmen und nur die Bereiche ändern:

    Dim rgZiel As Range
    Dim rgQuelle As Range
    Dim strWB As String
    If Me.lbMappen.ListIndex  0 Then
        Exit Sub
    End If
    strWB = Me.lbMappen.List(Me.lbMappen.ListIndex)
    Set rgQuelle = Application.Workbooks(strWB).ActiveSheet.Range(Me.txtQuellBereich)
    Set rgZiel = ActiveWorkbook.ActiveSheet.Range(txtZielBereich)
    rgZiel.Value = rgQuelle.Value
'Das ist neu
'die automatisch vergebenen Namen hier einsetzen
    Set rgQuelle = Application.Workbooks(strWB).ActiveSheet.Range(Me.Textbox3.Text)
    Set rgZiel = ActiveWorkbook.ActiveSheet.Range(Me.Textbox4.Text)
    rgZiel.Value = rgQuelle.Value
'Neu
'kannst du mit beliebig vielen Textboxen wiederholen
    Unload Me
hth
Ulf


Anzeige
Einwandfrei dank, gibt es noch...
09.06.2023 17:14:31
susi
Hallo Ulf,
es funktioniert alles einwandfrei !
Zusatzfrage:
gibt es eine Möglichkeit, das man die zu kopierende Zelle auswählen kann ?
Daher würde ich die zu kopierende Datei aufrufen und dann auf die kopierende Zelle
auf der Datei auswählen ?
Nur wenn möglich ist!

Gruß susi


AW: Einwandfrei dank, gibt es noch...
09.06.2023 17:41:27
Ulf
Hi Susi,
ja ist im Formular schon zu sehen
CommandButton aufziehen neben der Textbox, (in meiner Datei sind schon zwei zu sehen)
Doppelklick drauf=>Codeeditor
(für Textbox3 ist das bspw)


Private Sub .._Click()
    Dim rg As Range    
    Set rg = Application.InputBox("Bereich wählen", "Bereich", Type:=8)
    Me.Textbox3.Text = rg.AddressLocal
End Sub
Textbox.. oder txtQuellbereich
Kannst du für alle, die variabel sein müssen wiederholen

hth


Anzeige
Das stimmt aber...
09.06.2023 17:49:32
susi
Hallo Ulf,
ich bin ja auch nicht so fit wie Du !
Aber es wäre übersichtlicher, wenn der Kollege die Datei offen sieht, dort die Zelle auswählen
könnte !

Gruß susi


Anbei zur Info:
09.06.2023 17:24:04
susi
Hallo Ulf,
anbei das Makro zur Info:
Private Sub cmdOK_Click()
    Dim rgZiel As Range
    Dim rgQuelle As Range
    Dim strWB As String
    If Me.lbMappen.ListIndex  0 Then
        Exit Sub
    End If
    strWB = Me.lbMappen.List(Me.lbMappen.ListIndex)
    Set rgQuelle = Application.Workbooks(strWB).ActiveSheet.Range(Me.txtQuellBereich)
    Set rgZiel = ActiveWorkbook.ActiveSheet.Range(txtZielBereich)
    rgZiel.Value = rgQuelle.Value
'Das ist neu
'die automatisch vergebenen Namen hier einsetzen
    Set rgQuelle = Application.Workbooks(strWB).ActiveSheet.Range(Me.Textbox3.Text)
    Set rgZiel = ActiveWorkbook.ActiveSheet.Range(Me.Textbox4.Text)
    rgZiel.Value = rgQuelle.Value
    
    Set rgQuelle = Application.Workbooks(strWB).ActiveSheet.Range(Me.TextBox5.Text)
    Set rgZiel = ActiveWorkbook.ActiveSheet.Range(Me.TextBox6.Text)
    rgZiel.Value = rgQuelle.Value
   
    Set rgQuelle = Application.Workbooks(strWB).ActiveSheet.Range(Me.TextBox7.Text)
    Set rgZiel = ActiveWorkbook.ActiveSheet.Range(Me.TextBox8.Text)
    rgZiel.Value = rgQuelle.Value
   
    Unload Me
End Sub
Gruß susi


Anzeige
AW: von anderer aktiven Datei <zelle kopiere
10.06.2023 06:19:58
Ulf
Hi susi
Habe angepasst, was du wünschst:
Man kann das Formular verlassen und in Excel Fenster usw. anpassen zum Auswählen. Vorschlag wäre die notwendigen Fenster unterteilt anzuzeigen.
In der Datei sind die Mechanismen noch wie gehabt aber verallgemeinert,kannst du aber bestimmt nachvollziehen und bei Bedarf ergänzen.
https://www.herber.de/bbs/user/159521.xlsm
hth
Ulf


Leider ....
10.06.2023 12:11:03
susi
Hallo Ulf,
erst mal SUPER DANKE, das Du so viel unterstützt.
Wenn ich meine Datei nehme und das Formular aktiviere, kann ich nicht in der
gewünschten (geöffneten) Tabelle etwas auswählen.

Gruß susi


Anzeige
Anbei meine Musterdatei
10.06.2023 12:30:55
susi
Hallo Ulf,
anbei meine Musterdatei.
https://www.herber.de/bbs/user/159526.xlsm
Es sollte auf der Tabelle ausgewählt werden können:
E13 oder E14 und oder E19;E20

Da es später auch andere Zellen sein können, würde ich mich freuen, wenn
es mit der Auswahl klappen würde.

Gruß susi


Ich habe eine Idee !
10.06.2023 13:03:28
susi
Hallo Ulf,
mein Vorschlag wäre;
Die Userform größer machen und in der rechten Hälfte ein Abbild der Datei hinterlegen.
Ich brauch ja nur sehen, welche Zellen als Quelle ich aussuchen muss, somit ergibt sich doch alles
ODER ?

Gruß susi


Anzeige
AW: Leider ....
10.06.2023 15:50:30
Ulf
Hi Susi,
die Userform muss modeless wie im Modul der Bsp-Datei zu sehen geöffnet werden, dh. in Modul1 gestartet sein
weiter nach deinem letzten Beitrag


Hey Ulf, du hast RECHT, wie immer
10.06.2023 18:00:39
susi
Hallo Ulf,
ja, ich kann jetzt die Zellen anklicken aber es wäre doch besser wenn man die Zellen ausgewählt
hat und die Textboxen würden von Textbox1 bis 4 direkt mit dem was man angeklickt hat gefüllt.
Wenn es geht ?
Oder die ausgewählten Zellen werden in die Userform irgendwo reingeschrieben.

Gruß susi


Hallo Ulf hier Beispiel
10.06.2023 14:25:38
susi
Hallo Ulf,
anbei Beispiel Userform mit Image, hier sollte dann der Tabellenausschnitt dargestellt werden,
von E10 bis E25 allerdings müssen die Zeilenangaben ebenfalls kopiert werden.
Dann kann der Mitarbeiter die Zellen erkennen die jeweils ausgewählt werden bzw. direkt in
die entsprechenden Textboxen eingesetzt.

https://www.herber.de/bbs/user/159528.xlsm

Gruß susi


Anzeige
Würde mich freuen...
10.06.2023 19:08:34
susi
Hallo Ulf,
ich habe nochmal hin und her überlegt.
Ich glaube die beste Sache wäre, wenn der Tabellenausschnitt also mit Zahlenreihe links auf
der Userform zu sehen wäre.
Dann brauch man nur die Zellen auswählen und diese in die Textboxen setzen.

Gruß susi


Bitte mal Info
11.06.2023 09:50:07
susi
Guten Morgen,
bitte mal auf meine Frage antworten, ob mein Vorschlag möglich ist.
Ich würde sonst einen neuen Tread aufmachen und speziell nochmal danach fragen,
ansonsten klappt alles.
Es geht also nur darum einen Auschnitt aus der geöffneten Datei (aktuelleSheet),
wie von Ulf dargestellt, in der UF darzustellen damit man die Zellnamen
feststellen kann. Also E14 oder E20 …

Mit freundlichen Grüßen
Susi


AW: Bitte mal Info
11.06.2023 10:14:42
Oberschlumpf
Hi,

wenn niemand antwortet (du hast ja schooon fast 15 Stunden gewartet!)...
...kann es sein, dass dein Excel-Problem gerad nicht das Wichtigste im Leben möglicher Antworter ist
...kann sein, dass niemand eine Lösung weiß
...kann sein, dass man keine Lust mehr hat zu antworten, weil du nach Erhalt einer funktionierenden Lösung immer noch weitere Fragen hast

Wie gesagt: all das KANN EIN GRUND SEIN!
Zumindest ich würde grundsätzlich empfehlen:
- stell in einem Beitrag eine Frage, zeig/erklär dazu, was du bisher selbst versucht hast, zeig per Upload eine Bsp-Datei
- wenn diese eine Frage zufriedenstellend beantwortet ist, du aber noch weitere Fragen hast, erstell einen neuen Beitrag mit wieder einer Frage

Meine Empfehlung ist natürlich nur eine Idee, wie man etwas tun kann - natürlich aber kannst du tun, was du willst

Ciao
Thorsten


Hallo Thorsten
11.06.2023 10:53:49
susi
Guten Morgen Thorsten,
Du hast mit deinen Argumenten Recht aber ich glaube meine Fragestellung
war zu umfangreich !

Gruß susi


SUPI Ulf aber noch eine kleine...
11.06.2023 10:58:49
susi
Guten Morgen Ulf,
danke nochmals für deine Unterstützung, perfekt !Ich habe den Bereich erweitert,
bis U und in der Reihe mal ab Zeile 10
Nummerierung eingesetzt also ab U10=10, U11=11 ...
Aber nur wenn möglich !!!
Könnte man die Nummerierung vorher bzw. beim aktivieren automatisch einsetzten ?
Dann wäre für jeden Kollegen sichtbar, welche Zelle er auswählen muss.

Gruß susi


kleiner Hinweis
11.06.2023 11:02:06
susi
kleiner Hinweis:
Das tbnGrösse Button ist beim aktivieren der UF nicht sichtbar !


AW: kleiner Hinweis
11.06.2023 11:16:49
Ulf
Hi Susi
das ist Absicht, weil Test, genauso wie das Speichern der Position.
die Sache mit U.. schau ich mir an
bis denne
biba


Hallo Ulf alles toll !
11.06.2023 14:08:20
susi
Hallo Ulf,
alles Super !
Kann man jetzt noch die Nummerierung in Spalte U Zeile 10 mit 10 anfangen bzw. einsetzen ?

mfg susi


Hey Ulf, also von von 10-25 …
11.06.2023 14:29:04
susi


Sorry, es wird nichts nummeriert !
11.06.2023 15:14:06
susi
Sorry Ulf,
ich entdecke keine Nummerierung obwohl im Muster zu sehen war ?

gruß susi


Hallo Ulf, würde mich freuen...
11.06.2023 20:28:21
susi
Guten Abend Ulf,
würde mich freuen wenn Du mir das mit der Nummerierung noch machen könntest.
Alles andere hast DU ja schon erfolgreich programmiert !
Ehrlich gesagt, für mich vieles wie "böhmische Dörfer" aber egal, etwas habe ich
dazu gelernt !

Gruß susi


AW: Hallo Ulf, würde mich freuen...
11.06.2023 22:02:42
Ulf
Grüsse Susi
habe bis dato nicht verstanden:
a) wann numeriert werden soll
b) wo; in welchem Blatt
eine simple Reihe in der vorhandenen Datei ist seehr einfach auch von dir zu erstellen, präzisiere bitte dein Anliegen,
dann kümmere ich mich morgen sehr früh drum.

Nimm Sonne mit, wer weiß wie lang die noch brennt:-)


AW: Hallo Ulf, würde mich freuen...
11.06.2023 22:11:15
susi
Guten Abend Ulf,
danke im Voraus das Du das noch machen kannst.
Wenn in der Spalte U von 10 durchgehend bis 30 nummeriert
wird, können die Kollegen absehen welche Zellen sie in
den Textboxen 1-4 einsetzen müssen !
Die Nummerierung sollte halt bevor geöffnet wird
reingesetzt werden.

Gruß susi


AW: Hallo Ulf, würde mich freuen...
11.06.2023 22:14:52
susi
Sorry,
natürlich das Blatt, welches in der UF angezeigt
wird.
Gruß susi


AW: Hallo Ulf, würde mich freuen...
11.06.2023 22:34:44
onur
Nix für Ungut, aber: Ist es denn wirklich so schwer, einen Beitrag richtig durchzulesen und bei zwei gestellten Fragen auch Beide zu beantworten? :)


Hallo onur
12.06.2023 11:51:02
susi
Hallo Onur,
Nix für Ungut, aber: Ist es denn wirklich so schwer, einen Beitrag richtig durchzulesen und bei zwei gestellten Fragen auch Beide zu beantworten? :)
das liegt daran, dass ich nicht die Fachfrau bin, um eure Anforderungen und Beschreibungen fachlich so
einzubringen !

Gruß susi


AW: von anderer aktiven Datei <zelle kopiere
12.06.2023 01:33:25
Ulf
Hi Susi,
numeriert nu alles was geöffnet wird und behauptet Hauptlager-Abkömmling zu sein. Habe eine egal-Checkbox implementiert, die aktiv ist und Nachfragen bei Speichern aufgrund der Numerierung verhindert.
Hoffe das tut

https://www.herber.de/bbs/user/159543.xlsm

hf
Ulf


Sorry, leider keine Dateien
12.06.2023 09:41:36
susi
Guten Morgen Ulf,
sehr nett aber es werden in der Listbox keine offenen Dateien angezeigt.

Gruß susi


AW: Sorry, leider keine Dateien
12.06.2023 09:58:43
Ulf
Moinmoin,

überprüft:
10 offene Dateien, davon 4 mit, wie angesagt, im Dateinamen beginnend mit Hauptlager
Ergebnis:
4 Listeneinträge
??

Bitte Meldung
Gruß
Ulf


KEINE Daten vorhanden
12.06.2023 11:59:13
susi
Hallo Ulf,
es sind in der Listbox keine Daten aufgeführt.
In der alten Ausführungen wird die Listbox gefüllt.

mfg
Susi


AW: KEINE Daten vorhanden
12.06.2023 12:23:58
Ulf
Hi Susi,
habe die hochgeladene Datei getestet. Das Ergebnis:
https://i.postimg.cc/4dbdgrwN/funktionspr-fung.png
funzt also wie soll.
Im Code gibt es eine Prüfung auf hauptlager..., die sollte auch drin sein, da sonst Änderungen an jeder offenen Mappe möglich sind.
Als Freelancer würde ich mir das Deaktivieren und damit verbundene Risiko schriftlich bestätigen lassen und mich von Regressforderungen freimachen.
Im Code des Formulars dürft ihr gerne

Private Sub UserForm_Initialize()
    On Local Error GoTo UserForm_InitializeERR
    Dim Wb As Workbook
    Dim wks As Worksheet
    Dim strWb As String
    Dim props As DocumentProperties
    Dim p As DocumentProperty
    For Each Wb In Excel.Workbooks
        strWb = Wb.Name
        If strWb > ActiveWorkbook.Name Then
            If LCase(Left(strWb, 10)) = "hauptlager" Then
                Me.lbMappen.AddItem Wb.Name
            End If
        End If
    Next Wb
    Set props = ThisWorkbook.CustomDocumentProperties
    If props.Count > 0 Then
        Me.Left = props.Item("PropLeft").Value
        Me.Top = props.Item("PropTop").Value
        If Me.Left + Me.Width > Application.Width Then
            Me.Left = 0
        End If
        If Me.Top + Me.Height > Application.Height Then
            Me.Top = 0
        End If
        Me.chkEgal.Value = props.Item("Egal").Value
        Me.TextBox9.Text = props.Item("Vorschaubereich").Value
    End If
UserForm_InitializeERR:
End Sub
mit

Private Sub UserForm_Initialize()
    On Local Error GoTo UserForm_InitializeERR
    Dim Wb As Workbook
    Dim wks As Worksheet
    Dim strWb As String
    Dim props As DocumentProperties
    Dim p As DocumentProperty
    For Each Wb In Excel.Workbooks
        strWb = Wb.Name
        If strWb > ActiveWorkbook.Name Then
            'If LCase(Left(strWb, 10)) = "hauptlager" Then
                Me.lbMappen.AddItem Wb.Name
            'End If
        End If
    Next Wb
    Set props = ThisWorkbook.CustomDocumentProperties
    If props.Count > 0 Then
        Me.Left = props.Item("PropLeft").Value
        Me.Top = props.Item("PropTop").Value
        If Me.Left + Me.Width > Application.Width Then
            Me.Left = 0
        End If
        If Me.Top + Me.Height > Application.Height Then
            Me.Top = 0
        End If
        Me.chkEgal.Value = props.Item("Egal").Value
        Me.TextBox9.Text = props.Item("Vorschaubereich").Value
    End If
UserForm_InitializeERR:
End Sub
ersetzen, dann beschreibt der Code jede Mappe.

hth
Gruss
Ulf


Super Super !!! Perfekt Ulf ! _)
12.06.2023 12:37:40
susi
Danke Ulf,
alles perfekt und DANKE auch für die Geduld.
Ich wünsche Dir herzlichst eine schöne Woche !

mfg
Susi


AW: Super Super !!! Perfekt Ulf ! _)
12.06.2023 20:32:30
Ulf
Bitte doch
und ebenso
biba


Hey ULF ! Wo kann ich...kleine Nachfrage
13.06.2023 13:41:51
susi
Hallo Ulf,
wo kann ich die Position der UserForm einstellen.
Ich möchte diese beim öffnen etwas mehr in die Mitte und nach oben positionieren.

mfg
Susi


Hallo Pierre kann ich nicht gebrauchen
13.06.2023 14:12:54
susi
Hallo Pierre,
kann ich nicht gebrauchen, da Ulf ein riesiges Makro geschrieben hat, sorry.

Gruß susi


AW: Hallo Pierre kann ich nicht gebrauchen
13.06.2023 14:17:08
Pierre
Hast du dir den Link angeguckt? Da wird beschrieben, wie du die Position anpassen kannst, ohne ein Makro dafür zu brauchen.


Das Makro hat Ulf erstellt, die ...
13.06.2023 18:31:22
susi
Guten Abend Pierre,
ich kann nicht verändern wie ich es möchte.
Die Startposition ja soweit aber keine Veränderung nach links oder oben.

Gruß susi


AW: Das Makro hat Ulf erstellt, die ...
13.06.2023 19:47:18
ralf_b
die Startupposition ist die der letzten Position als die UF geschlossen wurde.
Das hat er mit den Custumdocumentproperties gelöst.
Und zwar wird beim Schliessen der Userform die aktuelle Position gespeichert und beim nächsten Start wieder eingelesen.


AW: Das Makro hat Ulf erstellt, die ...
14.06.2023 13:09:52
Ulf
Hi Susi,
das Positionieren kann Probleme machen, deshalb:
ALT+F11, rechter Mausklick auf frmKopieren, Code anzeigen,unten steht:

Private Sub UserForm_Initialize()
    On Local Error GoTo UserForm_InitializeERR
    Dim Wb As Workbook
    Dim wks As Worksheet
    Dim strWb As String
    Dim props As DocumentProperties
    Dim p As DocumentProperty
    For Each Wb In Excel.Workbooks
        strWb = Wb.Name
        If strWb > ActiveWorkbook.Name Then
            If LCase(Left(strWb, 10)) = "hauptlager" Then
                Me.lbMappen.AddItem Wb.Name
            End If
        End If
    Next Wb
    Set props = ThisWorkbook.CustomDocumentProperties
    If props.Count > 0 Then
        Me.Left = props.Item("PropLeft").Value
        Me.Top = props.Item("PropTop").Value
        If Me.Left + Me.Width > Application.Width Then
            Me.Left = 0
        End If
        If Me.Top + Me.Height > Application.Height Then
            Me.Top = 0
        End If
        Me.chkEgal.Value = props.Item("Egal").Value
        Me.TextBox9.Text = props.Item("Vorschaubereich").Value
    End If
UserForm_InitializeERR:
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   Dim props As DocumentProperties
    Dim p As DocumentProperty
    Set props = ActiveWorkbook.CustomDocumentProperties
    If props.Count = 0 Then
        props.Add "propLeft", False, msoPropertyTypeString, Me.Left
        props.Add "propTop", False, msoPropertyTypeString, Me.Top
        props.Add "Vorschaubereich", False, msoPropertyTypeString, Me.TextBox9.Text
        props.Add "Egal", False, msoPropertyTypeBoolean, Me.chkEgal.Value
    Else
        For Each p In props
            If p.Name = "PropLeft" Then
                p.Value = Me.Left
            ElseIf p.Name = "PropTop" Then
                p.Value = Me.Top
            ElseIf p.Name = "Vorschaubereich" Then
                p.Value = Me.TextBox9.Text
            ElseIf p.Name = "Egal" Then
                p.Value = Me.chkEgal.Value
            End If
        Next p
    End If
End Sub
auskommentiert:

Private Sub UserForm_Initialize()
    On Local Error GoTo UserForm_InitializeERR
    Dim Wb As Workbook
    Dim wks As Worksheet
    Dim strWb As String
    Dim props As DocumentProperties
    Dim p As DocumentProperty
    For Each Wb In Excel.Workbooks
        strWb = Wb.Name
        If strWb > ActiveWorkbook.Name Then
            If LCase(Left(strWb, 10)) = "hauptlager" Then
                Me.lbMappen.AddItem Wb.Name
            End If
        End If
    Next Wb
    Set props = ThisWorkbook.CustomDocumentProperties
    If props.Count > 0 Then
'        Me.Left = props.Item("PropLeft").Value
'        Me.Top = props.Item("PropTop").Value
        If Me.Left + Me.Width > Application.Width Then
'            Me.Left = 0
        End If
        If Me.Top + Me.Height > Application.Height Then
'            Me.Top = 0
        End If
        Me.chkEgal.Value = props.Item("Egal").Value
        Me.TextBox9.Text = props.Item("Vorschaubereich").Value
    End If
UserForm_InitializeERR:
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   Dim props As DocumentProperties
    Dim p As DocumentProperty
    Set props = ActiveWorkbook.CustomDocumentProperties
    If props.Count = 0 Then
        props.Add "propLeft", False, msoPropertyTypeString, Me.Left
        props.Add "propTop", False, msoPropertyTypeString, Me.Top
        props.Add "Vorschaubereich", False, msoPropertyTypeString, Me.TextBox9.Text
        props.Add "Egal", False, msoPropertyTypeBoolean, Me.chkEgal.Value
    Else
        For Each p In props
            If p.Name = "PropLeft" Then
'                p.Value = Me.Left
            ElseIf p.Name = "PropTop" Then
'                p.Value = Me.Top
            ElseIf p.Name = "Vorschaubereich" Then
                p.Value = Me.TextBox9.Text
            ElseIf p.Name = "Egal" Then
                p.Value = Me.chkEgal.Value
            End If
        Next p
    End If
End Sub
dann wird nicht mehr positioniert, der Vorschaubereich kann dann über den Desktop reichen !
Wenn das Formular sich wie ursprünglich zeigen soll:

frmKopieren rechter Mausklick, Objekt anzeigen, in den leeren Bereich rechtsklicken, Eigenschaften, dort StartupPosition auf bspw 3

hth
Gruß
Heiko


Danke Heiko für die Info. -)
14.06.2023 18:51:36
Susi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige