Clever-Excel-Forum

Normale Version: Daten in Userform wieder anzeigen & bearbeiten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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)
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
Klappt!!

Vielen, vielen herzlichen Dank! :)
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