Microsoft Excel

Herbers Excel/VBA-Archiv

Wandernde Dropbox anpassen; Text in Zahl wandeln

Betrifft: Wandernde Dropbox anpassen; Text in Zahl wandeln von: Marcus Kempf
Geschrieben am: 13.11.2014 14:52:13

Hallo,

folgenden Code hat mir Rudi Mantaire zur Verfügung erstellt.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngJahr As Range
Set rngJahr = Intersect(Range("A1"), Target)
If Not rngJahr Is Nothing Then varJahr = Range("A1").Value
  ComboBox1.Visible = False
  If Target.Count = 1 Then
    Select Case Target.Row
      Case 43 To 435
        If Target.Column > 4 Then
          If Cells(36, Target.Column) <> "" Then
            With ComboBox1
              .ListFillRange = Cells(Target.Row, 3)
              .LinkedCell = Target.Address
              .Top = Target.Top
              .Left = Target.Left
              .Width = 102
              .Height = 18
              .Visible = True
              .Object.MatchRequired = True
            End With
            cbrng = Target.Address
          End If
        End If
    End Select
  End If
End Sub
Er erzeugt mir eine Dropbox in der jeweils ausgewählten Zelle.
Dies funktioniert soweit.

Nun möchte ich gerne ergänzen, dass der Wert der Combobox als Zahl in die Zelle eingetragen wird.

Hier für habe ich bereits folgende Lösung gefunden:
Private Sub ComboBox1_Click()
    With ComboBox1
        If .ListIndex > -1 Then
            Range("B1") = Clng(.Text)
        End If
    End With
End Sub
Hierzu war folgender Hinweis gegeben:


Du vergibst keine LinkedCell für die CB und kopierst stattdessen den folgenden Code in das Klassenmodul der entsprechenden Tabelle.

Die Adresse der Ausgabezelle musst du nartürlich anpassen.


Dies habe ich wie folgt versucht:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngJahr As Range
Set rngJahr = Intersect(Range("A1"), Target)
If Not rngJahr Is Nothing Then varJahr = Range("A1").Value
  ComboBox1.Visible = False
  If Target.Count = 1 Then
    Select Case Target.Row
      Case 43 To 435
        If Target.Column > 4 Then
          If Cells(36, Target.Column) <> "" Then
            With ComboBox1
              .ListFillRange = Cells(Target.Row, 3)
              '.LinkedCell = Target.Address
              .Top = Target.Top
              .Left = Target.Left
              .Width = 102
              .Height = 18
              .Visible = True
              .Object.MatchRequired = True
            End With
            cbrng = Target.Address
          End If
        End If
    End Select
  End If
End Sub

Sub ComboBox1_Click()
    With ComboBox1
        If .ListIndex > -1 Then
            cbrng = CLng(.Text)
        End If
    End With
End Sub
Die kursive Zeile wird mir hierbei als Fehler angezeigt.

Kann mir das Ganze jemand berichtigen?

Danke im Voraus.

  

Betrifft: AW: Wandernde Dropbox anpassen; Text in Zahl wandeln von: Rudi Maintaire
Geschrieben am: 13.11.2014 15:04:28

Hallo,
ungetestet:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngJahr As Range
Set rngJahr = Intersect(Range("A1"), Target)
If Not rngJahr Is Nothing Then varJahr = Range("A1").Value
  ComboBox1.Visible = False
  If Target.Count = 1 Then
    Select Case Target.Row
      Case 43 To 435
        If Target.Column > 4 Then
          If Cells(36, Target.Column) <> "" Then
            With ComboBox1
              .ListFillRange = Cells(Target.Row, 3)
              .Top = Target.Top
              .Left = Target.Left
              .Width = 102
              .Height = 18
              .Visible = True
              .MatchRequired = True
              .Tag = Target.Address
            End With
          End If
        End If
    End Select
  End If
End Sub

Sub ComboBox1_Click()
    With ComboBox1
        If .ListIndex > -1 Then
            Range(.Tag) = CLng(.Text)
        End If
    End With
End Sub

Gruß
Rudi


  

Betrifft: AW: Wandernde Dropbox anpassen; Text in Zahl wandeln von: Marcus Kempf
Geschrieben am: 13.11.2014 15:14:50

Hallo rudi,

leider wird immernoch die selbe Stelle bemängelt.

Datei hängt mal mit dran, vielleicht liegt der Fehler ja woanders?

https://www.herber.de/bbs/user/93752.xlsm


  

Betrifft: Was für eine Zahl soll aus S oder... von: EtoPHG
Geschrieben am: 13.11.2014 15:29:58

...K werden, Markus.

Die Combobox enthält neben 1 und 0.5 nur Buchstaben und die können wohl kaum in eine Zahl umgewandelt werden? Also was genau willst du?

Zudem, der Vorschlag von Rudi die .Tag Eigenschaft zu verwenden würde nur mit Comboboxen auf einer UF funktionieren, ActiveX-Combobox kennt diese Eigenschaft nicht. Verwende statt .Tag die .LinkedCell Eigenschaft!

Gruess Hansueli


  

Betrifft: .LinkedCell von: Rudi Maintaire
Geschrieben am: 13.11.2014 15:45:04

Hallo,
noch einfacher ist die TopLeftCell.

Gruß
Rudi


  

Betrifft: AW: Wandernde Dropbox anpassen; Text in Zahl wandeln von: Rudi Maintaire
Geschrieben am: 13.11.2014 15:43:37

Hallo,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngJahr As Range
Set rngJahr = Intersect(Range("A1"), Target)
If Not rngJahr Is Nothing Then varJahr = Range("A1").Value
  ComboBox1.Visible = False
  If Target.Count = 1 Then
    Select Case Target.Row
      Case 43 To 435
        If Target.Column > 4 Then
          If Cells(36, Target.Column) <> "" Then
            With ComboBox1
              .ListFillRange = Cells(Target.Row, 3)
              .LinkedCell = ""
              .Top = Target.Top
              .Left = Target.Left
              .Width = 102
              .Height = 18
              .Visible = True
              .MatchRequired = True
            End With
          End If
        End If
    End Select
  End If
End Sub
Sub ComboBox1_Click()
With ComboBox1
If .ListIndex > -1 Then
If IsNumeric(.Text) Then
.TopLeftCell = CDbl(.Text)
Else
.TopLeftCell = .Text
End If
End If
End With
End Sub Gruß
Rudi


  

Betrifft: AW: Wandernde Dropbox anpassen; Text in Zahl wandeln von: Marcus Kempf
Geschrieben am: 14.11.2014 09:04:35

Hallo Rudi,

ich weiß gar nicht, wie ich Dir genug danken könnte für die großartige Hilfe die Du mir hier bietest.

Danke, Danke, Danke

Marcus


  

Betrifft: AW: Wandernde Dropbox anpassen; Text in Zahl wandeln von: Marcus Kempf
Geschrieben am: 14.11.2014 09:18:22

Ich muss leider noch einmal stören, wenn ich nun in einer Zelle etwas eingebe und anschließend in die nächste Zelle wechsele, so wird der letzte Eintrag sofort angezeigt, selbst wenn dieser in der aktuellen Liste nicht vorhanden ist.

Wie kann dies vermieden werden?


  

Betrifft: AW: Wandernde Dropbox anpassen; Text in Zahl wandeln von: Marcus Kempf
Geschrieben am: 14.11.2014 09:18:27

Ich muss leider noch einmal stören, wenn ich nun in einer Zelle etwas eingebe und anschließend in die nächste Zelle wechsele, so wird der letzte Eintrag sofort angezeigt, selbst wenn dieser in der aktuellen Liste nicht vorhanden ist.

Wie kann dies vermieden werden?


  

Betrifft: AW: Wandernde Dropbox anpassen; Text in Zahl wandeln von: Rudi Maintaire
Geschrieben am: 14.11.2014 10:27:06

Hallo,
dann setz den Listindex zurück

            With ComboBox1
              .ListFillRange = Cells(Target.Row, 3)
              .LinkedCell = ""
              .Top = Target.Top
              .Left = Target.Left
              .Width = 102
              .Height = 18
              .Visible = True
              .MatchRequired = True
              .ListIndex = -1 
            End With

Gruß
Rudi


 

Beiträge aus den Excel-Beispielen zum Thema "Wandernde Dropbox anpassen; Text in Zahl wandeln"