Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
400to404
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

UserForm initialisieren / Array Spalten?

UserForm initialisieren / Array Spalten?
Erich
Hallo EXCEL-Freunde,
über eine UserForm sollen in einer Listbox die Spalten A-Z erscheinen.
Gibts hier eine Abkürzung für den Array, oder muss ich wirklich
von A - Z alle Buchstaben einzeln benennen?
Private Sub UserForm_Initialize() Dim t As Integer Dim farb As Variant, spalten As Variant farb = Array("=", "kleiner", "größer") spalten = Array("A", "B", "C", "D") ' ? müssen hier alle Buchstaben aufgereiht werden? Dim AM As Workbook, i As Integer For Each AM In Application.Workbooks ComboBox1.AddItem AM.Name ComboBox2.AddItem AM.Name Next AM For t = 0 To 3 With ComboBox4 .AddItem spalten(t) End With Next ' For i = 64 To 89 ' ComboBox4.AddItem i ' Next For t = 0 To 2 With ComboBox3 .AddItem farb(t) End With Next End Sub
Besten Dank für eine Hilfe!
mfg
Erich
AW: UserForm initialisieren / Array Spalten?
Hajo_Zi
Hallo Erich
übergebe es doch mit einmal. Hier mal ein Beispielcode

Private Sub UserForm_Activate()
Dim rngSource As Object
Dim intColums As Integer
ListBox1.Tag = 1
Set rngSource = Range("A1").CurrentRegion
' Die oberste Zeile enthaelt die Feldnamen.
' Diese brauchen wir nur dort um die Columnheader darzustellen,
' aber nicht fuer die Listboxeintraege.
' Also den Datenbereich um die Erste Zeile reduzieren.
Set rngSource = rngSource.Offset(1, 0).Resize(rngSource.Rows.Count - 1, rngSource.Columns.Count)
' Spaltenanzahl des Datenbereichs ermitteln.
intColums = rngSource.Columns.Count
With Me.ListBox1
.ListStyle = fmListStyleOption      ' Auswahlfeld zu Beginn der Zeile
' von Peter Haserodt
' nur eine Auswahl, bei .ListStyle = fmListStyleOption Optionbutton in Listbox
'.MultiSelect = fmMultiSelectSingle
' mehrere können ausgewählt werden,.ListStyle = fmListStyleOption checkboxen in Listbo
.MultiSelect = fmMultiSelectMulti
'.MultiSelect = fmMultiSelectExtended
' gibt eigentlich nur bei Liststyle Plain einen Sinn, funzt aber auch anders.
' Dies bewirkt, dass mit Shift und Strg Tasten  eine Mehrfachauswahl getroffen
' werden kann
.ColumnCount = intColums
.ColumnHeads = True
.RowSource = rngSource.Address
End With
Set rngSource = Nothing
ListBox1.Tag = ""
End Sub



Anzeige
Danke Hajo - werde mal testen; o.T.
Erich
.
AW: UserForm initialisieren / Array Spalten?
NE
Hi Erich,
noch eine Variante:

Sub test()
Dim spalten(65 To 90) As String, i&, j&
For i = 65 To 90
spalten(i) = Chr(i)
Next
For j = LBound(spalten) To UBound(spalten)
Debug.Print spalten(j)
Next
End Sub

lg Nancy
AW: UserForm initialisieren / Array Spalten?
Erich
Hallo Nancy,
besten Dank!
Habs einbinden können; Zusatzfrage:
geht das auch für weitere Spalten ab AA - IV ?
Schönes Wochenende!
mfg
Erich
Gute Frage
NE
Hi Erich,
na Du erst wieder! ;;-))
Hm, wie gesagt gute Frage ...
knobel zwar rum, bekomms aber nicht wirklich hin ...
Das isses natürlich nicht, muss erstmal passen,
würde mich aber auch interessieren.
Ansonsten klang ja Hajos Vorschlag denne ganz gut.
lg Nancy
--

Sub nichlachen()
Dim spalten(65 To 91) As String, spalten2(65 To 90) As String, i&, j&, k&
For i = 65 To 91
If i &lt= 90 Then
spalten(i) = Chr(i)
Debug.Print spalten(i)
Else
k = 65
For j = 65 To 90
spalten2(j) = Chr(k) & Chr(j)
Debug.Print spalten2(j)
Next j
'jetzt eigentlich wieder schleife und k=k+1 oder so
End If
Next i
End Sub

Anzeige
AW: Gute Frage
NE
Yeps, etwas krückelig etwa so,
lg Nancy
--

Sub test()
Dim spalten(65 To 90) As String, spalten2(65 To 90) As String, i&, j&, k&
For i = 65 To 91
If i &lt= 90 Then
spalten(i) = Chr(i)
Debug.Print spalten(i)
Else
For k = 65 To 90
For j = 65 To 90
spalten2(j) = Chr(k) & Chr(j)
Debug.Print spalten2(j)
Next j
Next k
End If
Next i
End Sub

AW: Gute Frage
Erich
Hallo Nancy,
diesmal komme ich nicht weiter; wenn ich den Code (wie beim ersten Vorschlag)
anpasse erhalte ich diesmal die Fehlermeldung:
Laufzeitfehler 9
Index außerhalb des gültigen Bereichs
und die UF kann nicht aufgerufen werden:
die Startzeile ...Show leuchtet gelb.
Derzeit sieht mein Code so aus; den ersten Vorschlag habe ich belassen:

Private Sub UserForm_Initialize()
Dim t As Integer, farb As Variant
'Dim spalten(65 To 90) As String, i&, j&
Dim spalten(65 To 90) As String, spalten2(65 To 90) As String, i&, j&, k&
farb = Array("=", "kleiner", "größer")
Dim AM As Workbook  ', i As Integer
For Each AM In Application.Workbooks
ComboBox1.AddItem AM.Name
ComboBox2.AddItem AM.Name
Next AM
For i = 65 To 91
If i <= 90 Then
spalten(i) = Chr(i)
With ComboBox4
.AddItem spalten(j)
End With
'Debug.Print spalten(i)
Else
For k = 65 To 90
For j = 65 To 90
spalten2(j) = Chr(k) & Chr(j)
With ComboBox4
.AddItem spalten2(j)
End With
'Debug.Print spalten2(j)
Next j
Next k
End If
Next i
'
'    For i = 65 To 90
'    spalten(i) = Chr(i)
'    Next
'    For j = LBound(spalten) To UBound(spalten)
'    With ComboBox4
'        .AddItem spalten(j)
'    End With
'    'Debug.Print spalten(j)  '  notwendig, welcher Sinn ?
'    Next
For t = 0 To 2
With ComboBox3
.AddItem farb(t)
End With
Next
End Sub


Besten Dank für eine weitere Hilfe!
mfg
Erich
Anzeige
AW: Gute Frage
NE
Hallo Erich,
schwitz ... ;-)
Noch ein Versuch, so sollte es besser sein ...
lg Nancy
--

Sub A_bis_IV()
Dim spalten(1 To 256) As String, i&, j&, k&, x&
For i = 65 To 91
If i &lt= 90 Then
spalten(i) = Chr(i)
Debug.Print spalten(i)
Else
For k = 65 To 74
x = 1
For j = 65 To 90
spalten(i + x) = Chr(k) & Chr(j)
Debug.Print spalten(i + x) 'meine 'Kontrolle' halt ;-), kannste löschen
If k = 73 And j = 86 Then Exit Sub
Next j
x = x + 1
Next k
End If
Next i
End Sub

G E N I A L !!
Erich
Hallo Nancy,
das war Schwerstarbeit - allerbesten Dank!!
Eien Frage noch:
Debug.Print - was ist das für eine Kontrolle?
mfg
Erich
Anzeige
AW: G E N I A L !!
NE
Hi Erich,
drück' mal Strg + G im VBE [oder Ansicht Direktfenster]
dann lass mal meinen oder Michas Code laufen ...
debug.print bedeuted nix andres, als dahinein zu schreiben.
Oder tippe mal darein: ?time [Enter]
?time
17:19:21
?date
20.03.04
?now
20.03.04 17:19:31
Siehste dann schon ;-)
cu Nancy
DANKE für die freundliche Erklärung! o.T.
Erich
.
AW: Gute Frage
y
hi Nancy,
brech dir nicht den arm bei sowas ;-)
geht bestimmt noch einfacher aber du hattest dich etwas verrannt und kommst nicht mehr raus aus der ecke

Sub A_bis_IV()
Dim strspalte(1 To 256) As String
For i = 1 To 256
strspalte(i) = Cells(i).Address(RowAbsolute:=False, ColumnAbsolute:=False)
strspalte(i) = Left(strspalte(i), Len(strspalte(i)) - 1)
Debug.Print strspalte(i)
Next i
End Sub

cu Micha
Anzeige
na endlich :-)
NE
Ach Micha,
wenn ich Dich nich hätte ...
Begann schon langsam Dich etwas zu vermissen ;-)
Supi, thx :-)
cu Nancy
off topic @Nancy
y
hi Nancy,
ich wusste doch das du dich freust :-)
hast du eigentlich meine antwort auf deine mail erhalten ? (es kam nix mehr von dir)
cu Micha
AW: off topic @Nancy
NE
Hi Micha,
sicher hab' ich, war da noch was offen ? ;;-))
sorry, *grrr* ich HASSE dieses sch... gmx & schau da viiieel zu selten rein ;-)
bis denne ;-)
Nancy
N O C H G E N I A L E R !!
Erich
Hallo Micha,
besten Dank, funzt genauso!
Schönes Wochenende!
mfg
Erich
AW: so geht's auch...
FP
Hallo Nancy, Micha & Co,

Sub Demo()
Dim strSpalte(256) As String
Dim i           As Integer
For i = 1 To 256
strSpalte(i) = WorksheetFunction.Substitute(Cells(1, i).Address(0, 0), 1, "")
Next
End Sub

Servus aus dem Salzkammergut
Franz
Anzeige
AW: so geht's auch...
y
hi Franz,
an eine worksheetfunction hätte ich als letztes gedacht ;-)
und ob ich dann noch auf wechseln gekommen wäre :-(
danke auf jeden fall (wieder was gelernt)
cu Micha
STIMMT - Danke Franz ! (soviel Auswahl)o.T.
Erich
.
AW: so geht's auch...
NE
Hi Franz,
schliess mich Micha vollumfänglich an :-)
Da verrenkt man sich das Hirn und dann sowas,nenee ;;-))
Tolle Sache.
lg Nancy
--
na zum Trost [für mich nur], vielleicht hat ja mal einer
excelextern so'n Prob, wobei perfekto wars eh nich ;-)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige