Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Hallo,
ein Beispiel zu meiner Frage.
In der Zelle 2 der Spalte B steht beispielsweise der Einkauf von einer Person.
Am Anfang steht eine Datumsangabe und danach die Einkaufsliste.
Zum Beispiel: 14.09.20 Marmelade, Toast, Butter, Schinken, Eis, ...
Bei einem neuen Einkauf soll in der "gleichen Zelle" nach gleichem Vorgehen (Datum und dann die Einkaufsliste), der Eintrag oben drüber geschrieben werden.
Ich möchte, dass nur der aktuellste Eintrag angezeigt wird, und dass maximal 3 Zeilen angezeigt werden.
Gruß
Lukas
Public strText As String Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B2")) Is Nothing Then If Range("B2") = "" Then strText = "" Exit Sub End If On Error GoTo errorhandler Application.EnableEvents = False If strText <> "" Then If InStr(Range("B2"), Chr(10)) Then Range("B2") = Split(Range("B2"), Chr(10))(0) If InStr(strText, Chr(10)) Then Range("B2") = Range("B2") & Chr(10) & Split(strText, Chr(10))(0) & _ Chr(10) & Split(strText, Chr(10))(1) Else Range("B2") = Range("B2") & Chr(10) & strText End If End If strText = Range("B2") Application.EnableEvents = True End If Exit Sub errorhandler: Application.EnableEvents = True MsgBox Err.Number & Chr(10) & Err.Description End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("B2")) Is Nothing Then strText = Range("B2") End Subcu
Sub InStr() Dim iAnzahl As Integer Dim sEintrag As String Dim sEintragen As String 'ohne 2020 am Anfang Dim sAnzeigen As String sEintrag = Range("B2") sEintragen = Right(sEintrag, Len(sEintrag) - 4) iAnzahl = InStr(sEintragen, "2020") sAnzeigen = Left(sEintrag, iAnzahl + 2) End SubIch habe den Text auf der Variablen sAnzeigen, ich weis jedoch nicht, wie man das programmieren soll, dass nur dieser Eintrag in der Tabelle angezeigt wird, aber dennoch die anderen Sachen im Kästchen(neben fx) stehen, wenn man auf das Kästchen klickt.
Public strText As String Private Sub Worksheet_Change(ByVal Target As Range) Dim arr As Variant If Not Intersect(Target, Range("B2")) Is Nothing Then If Range("B2") = "" Then strText = "" Exit Sub End If If strText <> "" Then strText = Range("B2") & Chr(10) & strText arr = Split(strText, Chr(10)) If UBound(arr) > 2 Then ReDim Preserve arr(2) strText = Join(arr, Chr(10)) On Error GoTo errorhandler Application.EnableEvents = False Range("B2") = strText Application.EnableEvents = True Else strText = Range("B2") End If End If Exit Sub errorhandler: Application.EnableEvents = True MsgBox Err.Number & Chr(10) & Err.Description End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("B2")) Is Nothing Then strText = Range("B2") End Subcu
Sub Hi() Dim dHoehe As Double dHoehe = Range("B2").Rows.AutoFit If dHoehe >= 75 Then Cells(2, 2).RowHeight = 75 Else: Cells(2, 2).Rows.AutoFit End If End SubFür dHoehe kommt bei mir -1?
With Cells(2, 2) .Rows.AutoFit If .RowHeight >= 75 Then .RowHeight = 75 End Withcu
Sub Zeilenhoehe()...End Subeingebaut, damit ich das Programm abspielen kann.
Sub Zeilenhoehe() With Cells(2, 2) .Rows.AutoFit If .RowHeight >= 75 Then .RowHeight = 75 End With End SubIch habe es bisher nicht hinbekommen, dass die Zeilenhöhe automatisch, ohne Sub, eingestellt wird.
Sub ausgeführt werden? Gruß Lukas
Betrifft: AW: Zelle formatieren
von: ChrisL
Geschrieben am: 17.09.2020 17:40:46
Hi Lukas
Ich würde es zwischen End If und Exit Sub ins Change-Ereignis einkopieren.
Call Zeilenhoehe
oder direkt den Code in die Prozedur integrieren.
cu
Chris
Betrifft: AW: Zelle formatieren
von: ChrisL
Geschrieben am: 17.09.2020 18:42:45
Ich Schussel... nicht nötig, dass der Schnipsel jedes mal abgespielt wird. Besser weiter oben einfügen.
Private Sub Worksheet_Change(ByVal Target As Range) Dim arr As Variant If Not Intersect(Target, Range("B2")) Is Nothing Then If Range("B2") = "" Then strText = "" Exit Sub End If If strText <> "" Then strText = Range("B2") & Chr(10) & strText arr = Split(strText, Chr(10)) If UBound(arr) > 2 Then ReDim Preserve arr(2) strText = Join(arr, Chr(10)) On Error GoTo errorhandler Application.EnableEvents = False Range("B2") = strText Application.EnableEvents = True With Cells(2, 2) .Rows.AutoFit If .RowHeight >= 75 Then .RowHeight = 75 End With Else strText = Range("B2") End If End If Exit Sub errorhandler: Application.EnableEvents = True MsgBox Err.Number & Chr(10) & Err.Description End Sub
cu
Chris
Beiträge aus dem Excel-Forum zum Thema "Zelle formatieren"