Vba: zu schmale Zelle in Textbox anzeigen lassen
Leider ist die Liste Recht gross und die Werte die ich aus der
anderen Liste sind recht platzfordernd, d.h. ich muesste die
Spalte zu stark verbreitern um die Werte zu sehen. Wenn ich
aber auf die Zelle draufgehen, sehe ich statt des Wertes nur
die VLOOKUP-Formel.
Hi NikMo,
erstelle wie nachstehend beschrieben die beiden Codes.
Dann in Excel Alt+F8 und laß die Prozedur(Makro) „TextboxErzeugen“ ausführen, sie erzeugt eine Textbox im aktiven Blatt.
Der Code ist so ausgelegt, daß angenommen wird deine Lookup-Formeln stehen in Spalte B. Gehst du nun in eine Zelle von B so wird die Textbox mit dem Zellinhalt von Bx angezeigt.
Anstatt B kannst du eine andere Spalte nehmen, indem du hier:
If Intersect(Target, Columns(2)) Is Nothing Then Exit Sub
die 2 abänderst in die Spaltennummer der Spalte. A=1, B=2, usw.
Die Breite der Textbox änderst du in der Prozedur(Makro) „TextboxErzeugen“ ab an der Stelle wo dort
Width:=250
steht, danach die Prozedur nochmals ausführen lassen.
Gruß
Reinhard
Alt+F11, damit bist du im VB-Editor.
Wenn da noch kein „Modul1“ links in der Liste ist so klicke auf Einfügen–Modul, dann wird Modul1 erzeugt und du bist schon im Modul.
Wenn es schon existiert, doppelklicke links auf „Modul1“.
Dann kopiere folgenden Code hinein:
Option Explicit
'
Sub TextboxErzeugen()
Dim TBZelle
With ActiveSheet
On Error Resume Next
.Shapes("myTB").Delete
On Error GoTo 0
Set TBZelle = ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1", Link:=False, \_
DisplayAsIcon:=False, Left:=.Range("B1").Left, Top:=.Range("B1").Top, Width:=250, Height:=.Range("B1").Height + 6)
With TBZelle
'.Font.Bold = True 'Fehler??
.Name = "myTB"
.Enabled = False
.Visible = False
End With
End With
End Sub
Anschließend einen Doppelklick links auf den Tabellenblattnamen und diesen Code reinkopieren.
Option Explicit
'
Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
'Exit Sub
With myTB
.Visible = False
If Target.Cells.Count 1 Then Exit Sub
' Bei Columns ist 1=Spalte A, 2 Spalte B usw.
If Intersect(Target, Columns(2)) Is Nothing Then Exit Sub
.Value = Target.Value
.Top = Target.Top
.Font.Bold = True
.Visible = True
End With
End Sub
Vb-Editor schließen