Microsoft Excel

Herbers Excel/VBA-Archiv

Kombinationsfeld | Herbers Excel-Forum


Betrifft: Kombinationsfeld von: Andreas
Geschrieben am: 29.12.2009 10:02:52

Liebe Excel-Profis,

wenn ich ein Kombinationsfeld erzeuge und mit RMT "Steuerelement formatieren" drücke, komme ich auf dem Tab "Steuerung" zum Eintrag "Zellverknüpfung".

Ich möchte 300 Kombinationsfelder untereinander (in jeder Zeile eins) erzeugen, müsste jedoch die "Zellverknüpfung" jedesmal neu eingeben, da sie sich nicht dynamisch auf die neue Zeile anpasst. Leider benötige ich die Zellverknüpfung, weill ich hierauf einen Sverweis steuere, der mit dieser Zahl weiterrechnet.

Meine Frage also, kann ich mit blossem Kopieren des Kombinationsfeldes auf die nächste Zeile auch die Zellverküpfung sich anpassen lassen?

Vielen Dank im Voraus
Gruss
Andreas

  

Betrifft: AW: Kombinationsfeld von: Beverly
Geschrieben am: 29.12.2009 10:59:37

Hi Andreas,

nein, das geht nicht. Du kannst das höchstens per VBA machen:

Sub Kombinationsfelder()
    Dim cbbDropDown As DropDown
    Dim inElement As Integer
    For inElement = 1 To 300
        Set cbbDropDown = ActiveSheet.DropDowns.Add(10, 0, 50, 10)
        With ActiveSheet.Shapes(inElement)
            .Width = Cells(inElement, 1).Width
            .Height = Rows(inElement).RowHeight
            .Left = 0
            .Top = Rows(inElement).Top
            .ControlFormat.ListFillRange = "Tabelle1!$A$1:$A$7" 
            .ControlFormat.LinkedCell = Cells(.TopLeftCell.Row, .TopLeftCell.Row).Address
        End With
    Next inElement
    Set cbbDropDown = Nothing
End Sub

Die Kombinationsfelder werden in Spalte A ab Zeile 1 eingefügt. Ich bin davon ausgegangen, dass sie alle den selben Eingabebereich haben. Beides musst du an deine Bedingungen anpassen.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Kombinationsfeld von: Andreas
Geschrieben am: 29.12.2009 11:26:23

Hey gleich 3 VBA-Lösungen. Ich bin zwar eine Null in VBA, werde aber alle drei mal einkopieren und ausprobieren - habt ALLE vielen Dank und guten Rutsch :-)

Viele Grüsse
Andreas


  

Betrifft: hier noch eine Version... von: Tino
Geschrieben am: 29.12.2009 11:07:49

Hallo,
dieser geht alle Kombinationsfelder auf der Tabelle 1 durch und gibt diesem die Linkzelle rechts daneben.

Sub Link_Cell_Erstellen()
Dim oSh As Shape
For Each oSh In Tabelle1.Shapes
    If TypeName(oSh.DrawingObject) = "DropDown" Then
        oSh.DrawingObject.LinkedCell = oSh.TopLeftCell.Offset(0, 1).Address
    End If
Next oSh
End Sub
Gruß Tino


  

Betrifft: AW: Kombinationsfeld von: Josef Ehrensberger
Geschrieben am: 29.12.2009 11:17:34

Hallo Andreas,

nachdem du die Kombos erstellt hast und dem ersten die richtige Zellverknüpfung zugewiesen hast,
kannst du diesen Code ausprobieren.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub kombi()
  Dim objShp As Shape
  Dim lngOffset As Long, lngCol As Long
  
  For Each objShp In ActiveSheet.Shapes
    If objShp.Type = msoFormControl Then
      If objShp.FormControlType = xlDropDown Then
        If lngCol = 0 Then
          lngCol = Range(objShp.DrawingObject.LinkedCell).Column
          lngOffset = objShp.TopLeftCell.Row - _
            Range(objShp.DrawingObject.LinkedCell).Row
        Else
          objShp.DrawingObject.LinkedCell = Cells(objShp.TopLeftCell.Row - _
            lngOffset, lngCol).Address
        End If
      End If
    End If
  Next
  
End Sub



Gruß Sepp



Beiträge aus den Excel-Beispielen zum Thema "Kombinationsfeld"