Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Bei Klick in Zelle UserForm öffnen
#1
Hallo Leute!

Ich stehe im moment auf dem Schlauch.
Möchte gerne bei Klick in eine Zelle eine Userform öffnen. Habe dazu auch was im Netz gefunden.


Code:
Dim Adr1, Adr2 As String
Dim i, a, z, lolezte As Long

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

 'Stop
  If Target.Row >= 6 And Target.Row <= 50 Then
     Select Case Target.Row
       Case 6, 10, 14, 18, 22, 26, 30, 34, 36, 42          'Zeilen wo die Uf sich öffnen soll
     Select Case Target.Column
        Case 2 To 8                                        'Spalten wo die Uf sich öffnen soll
        'Case 2, 3, 4, 5
     Adr1 = Cells(4, Target.Column)                        'Zeile und Spalte wo der Tag drin steht
       KaDat = Cells(Target.Row - 1, Target.Column)
       KaDat = Format(KaDat, "dd/mm")
       With Sheets("Daten")
         For i = 37 To 43                                  'Schleife über Spalten
             Adr2 = .Cells(2, i)                           'Adresse2 Tag zuweisen aus Tabelle Daten
               If Adr2 = Adr1 Then                         'Adresse2 und 1 vergleichen wenn gleich weiter
                   'MsgBox "Prima"
                     UserForm1.ListBox1.Clear
                      z = 0                                'Zähler für Leerzeilen
                      loletzte = .Cells(Rows.Count, i).End(xlUp).Row
                       For a = 3 To loletzte                    'Schleife über Zeilen
                           'Listbox ohne Leerzeilen befüllen
                           If .Cells(a, i) <> "" Then
                               UserForm1.ListBox1.AddItem Sheets("Daten").Cells(a, i)
                             Else
                               z = z + 1
                                   If z = 15 Then
                                       UserForm1.ListBox1.Visible = False
                                       UserForm1.Label1.Visible = True
                                       
                                       Exit For
                                   End If
                           End If
                       Next a
               
                   Exit For                                'Schleife beenden
               End If
         Next i
       End With
           
           UserForm1.Show
     End Select
     End Select
  End If

 
End Sub


Ich würde jetzt gerne diesen Code für mehrere TabellenBlätter benutzen.
Weiß im moment nicht wie dies
Code:
(ByVal Target As Range)
an ein Modul übergeben kann.

Bitte um Tip's und vorschläge.
Danke schon mal an alle
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top
#2
Hallo,

das Makro macht aber einiges mehr, als nur ein Userfom öffnen. Welche Zelle(n) soll(en) denn geklickt werden, damit sich das UserForm öffnet?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
Hallo,

dieses Makro:


Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    UserForm1.Show
End Sub

im Modul "Diese Arbeitsmappe" würde reichen, um bei einem Klick in einer beliebigen Zelle das UserForm zu öffnen. Es funktioniert auf allen Tabellenblättern.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#4
Hallo Klaus-Dieter!


Zitat:das Makro macht aber einiges mehr, als nur ein Userfom öffnen.

Ja da hast du recht. Die Datei ist ein Dienstplan. Ich möchte gerne das Klickereigniss in den Tabellen 1-6 verwenden, in Tabelle 7 stehen Daten die für die Userform verwendet werden. Also soll in Tabelle 7 kein Klickereigniss stattfinden.
Zitat:Welche Zelle(n) soll(en) denn geklickt werden, damit sich das UserForm öffnet?
Die Zellen und Spalten werden hiermit
Code:
  If Target.Row >= 6 And Target.Row <= 50 Then
     Select Case Target.Row
       Case 6, 10, 14, 18, 22, 26, 30, 34, 36, 42          'Zeilen wo die Uf sich öffnen soll
     Select Case Target.Column
        Case 2 To 8                                        'Spalten wo die Uf sich öffnen soll
   
festgelegt.
Ich hoffe das hilft erstmal weiter.
Da ich weiß das du auch ein Formelprofi bist, habe da noch ein problem mit einer Formel in dieser Datei.
Aber erstmal dies. Datei zum Testen ist angehangen.


Angehängte Dateien
.xlsm   TestDienst_V2.xlsm (Größe: 138,47 KB / Downloads: 6)
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top
#5
Hallo,

ich bin kein Profi, sonst würde das hier Geld kosten. :19:
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#6
Hallo Michael,

mit diesem (deinem) Makro im Modul "Diese Arbeitsmappe" wäre deine Anforderung schon mal erfüllt. Makro im Modul der Tabelle1 (Januar_Februar) löschen.


Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'Stop
If ActiveSheet.Name = "Daten" Then Exit Sub

  If Target.Row >= 6 And Target.Row <= 50 Then
     Select Case Target.Row
       Case 6, 10, 14, 18, 22, 26, 30, 34, 36, 42          'Zeilen wo die Uf sich öffnen soll
     Select Case Target.Column
        Case 2 To 8                                        'Spalten wo die Uf sich öffnen soll
        'Case 2, 3, 4, 5
     Adr1 = Cells(4, Target.Column)                        'Zeile und Spalte wo der Tag drin steht
       KaDat = Cells(Target.Row - 1, Target.Column)
       KaDat = Format(KaDat, "dd/mm")
       With Sheets("Daten")
         For i = 37 To 43                                  'Schleife über Spalten
             Adr2 = .Cells(2, i)                           'Adresse2 Tag zuweisen aus Tabelle Daten
               If Adr2 = Adr1 Then                         'Adresse2 und 1 vergleichen wenn gleich weiter
                   'MsgBox "Prima"
                     UserForm1.ListBox1.Clear
                      z = 0                                'Zähler für Leerzeilen
                      loletzte = .Cells(Rows.Count, i).End(xlUp).Row
                       For a = 3 To loletzte                    'Schleife über Zeilen
                           'Listbox ohne Leerzeilen befüllen
                           If .Cells(a, i) <> "" Then
                               UserForm1.ListBox1.AddItem Sheets("Daten").Cells(a, i)
                             Else
                               z = z + 1
                                   If z = 15 Then
                                       UserForm1.ListBox1.Visible = False
                                       UserForm1.Label1.Visible = True

                                       Exit For
                                   End If
                           End If
                       Next a

                   Exit For                                'Schleife beenden
               End If
         Next i
       End With

           UserForm1.Show
     End Select
     End Select
  End If
End Sub
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#7
Hallo Klaus-Dieter!

Was soll ich sagen, Danke!

Nun zum der Formel. Ich denke mal das du die Datei Runtergeladen hast.
Im TabellenBlatt Daten stehen in den Zellen E4:K48 Formeln drin sind alle gleich aufgebaut.
Wir nehmen mal die Formel aus der Zelle E5

PHP-Code:
=WENN(ANZAHL2($D5);SUMMENPRODUKT((Januar_Februar!$B$4:$H$4=E$1)*(Januar_Februar!$B$5:$H$50=$D5))+SUMMENPRODUKT((März_April!$B$4:$H$4=E$1)*(März_April!$B$5:$H$50=$D5))+SUMMENPRODUKT((Mai_Juni!$B$4:$H$4=E$1)*(Mai_Juni!$B$5:$H$50=$D5))+SUMMENPRODUKT((Juli_August!$B$4:$H$4=E$1)*(Juli_August!$B$5:$H$50=$D5))+SUMMENPRODUKT((September_Oktober!$B$4:$H$4=E$1)*(September_Oktober!$B$5:$H$50=$D5))+SUMMENPRODUKT((November_Dezember!$B$4:$H$4=E$1)*(November_Dezember!$B$5:$H$50=$D5));""


Diese Formel zählt wie oft der Name aus D5 in den Tabellen 1-6 an diesen Tag vor kommt.
Soweit so gut. Wo ich jetzt das Problem habe ist
es soll nur in den Zeilen 6, 10, 14, 18, 22, 26, 30, 34, 36, 42 geschaut werden.

Ich haben das zur Zeit über den Bereich gelegt
PHP-Code:
Januar_Februar!$B$5:$H$50=$D5 
Wie muss das geändert werden das die Formel nur in den oben angegeben Zeile schaut?

Danke schonmal!
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top
#8
Hallo Michael,


Zitat:Da ich weiß das du auch ein Formelprofi bist, habe da noch ein problem mit einer Formel in dieser Datei.

ich weiß nicht genau, was bei dir diesen Eindruck erweckt hat. Mein Metier ist eher VBA (Makros). Werde mir das trotzdem mal ansehen. Wäre denn eine Makrolösung auch OK?

Zwar hatte ich mir vorgenommen, nicht schon wieder am Tabellenaufbau herum zu mäkeln. Da das Problem hier aber wieder zu Tage tritt, der Hinweis, dass es nicht optimal ist, gleichartige Daten auf mehrere Tabellenblätter zu verteilen. Das siehst du an deiner "Monster-Formel".
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#9
Hallo!

Na klar ist auch Makro Lösung in Ordnung.

Danke!
mfg
Michael
:98:

WIN 10  Office 2019
Antworten Top
#10
Hallo Michael,

hier die Version mit dem Makro für das Blatt "Daten". Das Makro startet automatisch, wenn das Blatt geöffnet wird. Die Nullwerte habe ich wegen der besseren Übersichtlichkeit in den Optionen ausgeschaltet.

Edit: Habe die Datei noch mal überarbeitet.


Angehängte Dateien
.xlsm   TestDienst_V2-4.xlsm (Größe: 121,67 KB / Downloads: 11)
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste