Daten in Userform wieder anzeigen & bearbeiten
#1
Hallo liebe Excel Spezialisten,

ich möchte gerne, wie in der angehängten Tabelle sichtbar, für jeden Eintrag eines Datensatzes eine MessageBox (A3) erstellen. In dieser MessageBox soll dann der Names des Projektes bzw. der Projekte erscheinen, wenn dort ein x hinterlegt ist (siehe AJ bis AL). Wie genau das ganze (wahrscheinlich mit einer Wennfunktion) erstellt wird, habe ich allerdings noch nicht ganz durchschaut.

Würde mich hier sehr über jegliche Tipps freuen :)

Vielen Dank und beste Grüße,
David

PS: Ich habe für eine anderes Probelm mit der selben Tabelle bereits einen Thread (http://www.clever-excel-forum.de/thread-5600.html)


Angehängte Dateien
.xlsm   Test fürs Forum.xlsm (Größe: 57,42 KB / Downloads: 15)
Top
#2
Hallo,

vielleicht so? (der Code gehört in das Klassenmodul der Tabelle)

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   Dim lngC As Long
   Dim strText As String
  
   If WorksheetFunction.CountIf(Cells(Target.Row, 36).Resize(, 3), "x") > 0 Then
      For lngC = 1 To 35
         strText = strText & Cells(2, lngC) & ": " & Cells(Target.Row, lngC) & vbCr
      Next lngC
   End If
   MsgBox strText
   Cancel = True
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • DavidHans
Top
#3
Klappt!!

Vielen, vielen herzlichen Dank! :)
Top
#4
Hi,

die Lösung für die Msgbox hat Stefan ja schon gepostet.

Ich habe Dir mal Deine Mammut-Makros zusammengefasst und eine Formatierung für Zahlen und Telefonnummern eingebaut (die zwei Teile für die beiden Blätter könnten auch noch zusammengefasst werden):
Option Explicit

Private Sub CommandButton1_Click()
  'Variable deklarieren
  Dim erste_freie_Zeile As Long
  Dim i As Integer
  If TextBox1 = "" Then Exit Sub
 
  'erste freie Zeile in Blatt "Master" ermitteln
  'und in Variable "erste_freie_Zeile" schreiben
  erste_freie_Zeile = Sheets("Master").Cells(Rows.Count, 1).End(xlUp).Row + 1     'Erste freie Zeile der Spalte A (1)
  'In Blatt "Master"
  With Sheets("Master")
     'alle Textboxen durchgehen
     For i = 1 To 35
        'Entscheidung, welches Format die Werte haben
        Select Case i
           'Spaltennummer
           '         Case Is = 2, 18, 20, 22, 23               'Datumfelder
           '            If IsDate(Me.Controls("TextBox" & i)) Then
           '               Cells(erste_freie_Zeile, i).Value = CDate(Me.Controls("TextBox" & i))
           '            Else
           '               Cells(erste_freie_Zeile, i) = ""
           '            End If
           'Spaltennummer
        Case Is = 1, 3, 4                   'Zahlenfelder
           If IsNumeric(Me.Controls("TextBox" & i)) Then
              .Cells(erste_freie_Zeile, i).Value = CLng(Me.Controls("TextBox" & i))
           Else
              .Cells(erste_freie_Zeile, i) = ""
           End If
           'Spaltennummer
        Case Is = 18, 27                          'Telefonnummer
           .Cells(erste_freie_Zeile, i).Value = CStr(Me.Controls("TextBox" & i))
        Case Else
           .Cells(erste_freie_Zeile, i).Value = Me.Controls("TextBox" & i)
        End Select
     Next i
  End With
 
  'erste freie Zeile in Blatt "Projekt X" ermitteln
  'und in Variable "erste_freie_Zeile" schreiben
  erste_freie_Zeile = Sheets("Projekt X").Cells(Rows.Count, 1).End(xlUp).Row + 1     'Erste freie Zeile der Spalte A (1)
  'In Blatt "Projekt X"
  With Sheets("Projekt X")
     'alle Textboxen durchgehen
     For i = 1 To 35
        'Entscheidung, welches Format die Werte haben
        Select Case i
           'Spaltennummer
           '         Case Is = 2, 18, 20, 22, 23               'Datumfelder
           '            If IsDate(Me.Controls("TextBox" & i)) Then
           '               Cells(erste_freie_Zeile, i).Value = CDate(Me.Controls("TextBox" & i))
           '            Else
           '               Cells(erste_freie_Zeile, i) = ""
           '            End If
           'Spaltennummer
        Case Is = 1, 3, 4                   'Zahlenfelder
           If IsNumeric(Me.Controls("TextBox" & i)) Then
              .Cells(erste_freie_Zeile, i).Value = CLng(Me.Controls("TextBox" & i))
           Else
              .Cells(erste_freie_Zeile, i) = ""
           End If
           'Spaltennummer
        Case Is = 18, 27                          'Telefonnummer
           .Cells(erste_freie_Zeile, i).Value = CStr(Me.Controls("TextBox" & i))
        Case Else
           .Cells(erste_freie_Zeile, i).Value = Me.Controls("TextBox" & i)
        End Select
        Me.Controls("TextBox" & i) = ""
     Next i
  End With
 
  'Sortierung nach Spalte A
  '  Range("A3:AT" & xZeile).Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlYes, _
      '      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

  Unload Me
 
End Sub
Top


Gehe zu:


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