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