Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
368to372
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
368to372
368to372
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Problem mit ComboBox

Problem mit ComboBox
27.01.2004 11:48:51
Martin
Hallo,
ich habe hier (www.excel-cd.de) ein Excel-Codefragment gefunden (ComboBox 161801), das nicht so funzt wie funzen sollte. Ich bin schon am Rande der Verzweiflung.
Ich möchte nicht die Suchbegriffe aus Spalte F einlesen sondern aus Spalte B. Bei Auswahl des Begriffes soll in dieser in eine TextBox übernommen zum editieren übernommen werden.
Aber egal, ob ich bei column(2) oder B oder sonst was eintrage es funzt einfach nicht!!
Bitte helft mir!
Danke!
Martin

VBA-Code anzeigen ClassModule: frmSuchen

Private Sub cboNamen_Change()
Dim rng As Range
Set rng = Columns(1).Find(cboNamen.Value, lookat:=xlPart, LookIn:=xlValues)
If Not rng Is Nothing Then
txtEdit.Text = rng.Text
txtEdit.Tag = rng.Address
End If
End Sub


Private Sub cmdCancel_Click()
Unload Me
End Sub


Private Sub cmdOK_Click()
Range(txtEdit.Tag).Value = txtEdit.Text
End Sub


Private Sub UserForm_Initialize()
cboNamen.List = Range("F1").CurrentRegion.Value
cboNamen.ListIndex = 0
End Sub

StandardModule: basMain
Sub CallForm()
frmSuchen.Show
End Sub




20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit ComboBox
27.01.2004 12:26:35
q
Hallo,
versuch es mal so :
Option Explicit
Private Const COL As String = "b" ' Spalte

Private Sub cboNamen_Change()
Dim rng As Range
Set rng = Columns(COL).Find(cboNamen.Value, lookat:=xlPart, LookIn:=xlValues)
If Not rng Is Nothing Then
txtEdit.Text = rng.Text
txtEdit.Tag = rng.Address
End If
End Sub



Private Sub cmdCancel_Click()
Unload Me
End Sub



Private Sub cmdOK_Click()
Range(txtEdit.Tag).Value = txtEdit.Text
End Sub



Private Sub UserForm_Initialize()
Dim vntList As Variant
vntList = Range(COL & "1").CurrentRegion.Value
' nur gultige Werte ...
If (VarType(vntList) <> vbEmpty And VarType(vntList) <> vbNull) Then
cboNamen.List = vntList
cboNamen.ListIndex = 0
Else
MsgBox "Keine Daten.", vbExclamation
End If
End Sub


Hat es dir geholfen? Gruss q
Anzeige
AW: Problem mit ComboBox
27.01.2004 12:43:44
Martin
Es funktioniert leider nicht :-(
AW: Problem mit ComboBox
27.01.2004 12:49:14
q
Hallo,
und was funktioniert nicht ?
AW: Problem mit ComboBox
27.01.2004 12:56:58
Martin
Ich habe die Datei mal hochgeladen: https://www.herber.de/bbs/user/3239.xls
(Ursprungsfassung)
Die zweite Spalte will er ums Verrecken nicht anzeigen! Es ist zum verzweifeln!!
DANKE!
Martin
AW: Problem mit ComboBox
27.01.2004 13:12:33
q
ist es jetzt besser ? :-)q
Option Explicit
Private Const COL As String = "b" ' kann aber auch e sein :-)

Private Sub cboNamen_Change()
Dim rng As Range
Set rng = Columns(COL).Find(cboNamen.Value, LookAt:=xlPart, LookIn:=xlValues)
If Not rng Is Nothing Then
txtEdit.Text = rng.Text
txtEdit.Tag = rng.Address
End If
End Sub



Private Sub cmdCancel_Click()
Unload Me
End Sub



Private Sub cmdOK_Click()
If (txtEdit.Tag <> "") Then Range(txtEdit.Tag).Value = txtEdit.Text
End Sub



Private Sub UserForm_Initialize()
Dim vntList As Variant
vntList = ActiveSheet.UsedRange.Columns(COL).Value
If (VarType(vntList) <> vbEmpty And VarType(vntList) <> vbNull) Then
cboNamen.List = vntList
cboNamen.ListIndex = 0
Else
MsgBox "Keine Daten.", vbExclamation
End If
End Sub

Anzeige
AW: Problem mit ComboBox
27.01.2004 13:15:57
Martin
Jaaaaaaaaaaaaaaaaaaaaaaa!
Geil, es funktioniert!
Du bist genial!
VIELEN DANK!!!
Martin
AW: Problem mit ComboBox
27.01.2004 13:20:06
q
:-))))
AW: Problem mit ComboBox
27.01.2004 14:43:25
Martin
Ich möchte noch eine "Bildlaufleiste" in das UserForm reinmachen mit der ich durch die Datensätze blättern kann (vor und zurück). Was müsste ich da an Code reinmachen?
Danke!
Martin
AW: Problem mit ComboBox
27.01.2004 14:46:18
Martin
Achso, und ich möchte noch eine ComboBox in das Formular reinmachen,
in der lediglich die Werte A, B, C, D zur Auswahl stehen sollen. Die Auswahl (z.B.: A) soll dann in eine bestimmte Spalte in das Tabellenblatt geschrieben werden.
Danke!
Martin
AW: Problem mit ComboBox
27.01.2004 15:43:07
q
Hallo,
hier der Code. Du musst noch ein ComboBox an die UserForm zugeben und es als "cboABCD" benennen und ein ScrollBar mit dem Namen "scrVScroll".
Beispiel hier :
https://www.herber.de/bbs/user/3245.xls
Gruss q

Option Explicit
Private Const COL As String = "b"

Private Sub cboNamen_Change()
Dim rng As Range
Set rng = Columns(COL).Find(cboNamen.Value, LookAt:=xlPart, LookIn:=xlValues)
If Not rng Is Nothing Then
txtEdit.Text = rng.Text
txtEdit.Tag = rng.Address
End If
End Sub



Private Sub cmdCancel_Click()
Unload Me
End Sub



Private Sub cmdOK_Click()
If (txtEdit.Tag <> "") Then Range(txtEdit.Tag).Value = txtEdit.Text
End Sub


Private Sub scrVScroll_Change()
ActiveWindow.ScrollRow = scrVScroll.Value
End Sub


Private Sub UserForm_Initialize()
Dim vntList As Variant
vntList = ActiveSheet.UsedRange.Columns(COL).Value
If (VarType(vntList) <> vbEmpty And VarType(vntList) <> vbNull) Then
cboNamen.List = vntList
cboNamen.ListIndex = 0
Else
MsgBox "Keine Daten.", vbExclamation
End If
' Werte in das ComboB zugeben :
With Me.cboABCD
.AddItem "A"
.AddItem "B"
.AddItem "C"
.AddItem "D"
.ListIndex = 0
End With
' ScrollBar :
Dim scr As Control
Set scr = Me.scrVScroll
With scr
.Top = Me.Top
.Left = (Me.Left + Me.InsideWidth) - scr.Width
.Height = Me.InsideHeight
.Min = 1
.Max = 1000
.Value = 1
.SmallChange = 1
.LargeChange = 100
End With
End Sub

Anzeige
AW: Problem mit ComboBox
27.01.2004 16:08:03
Martin
Das ist schon fast das was ich gesucht habe.
Aber irgendwas läuft leider immer noch schief:
- Wenn ich einen Wert aus der ComboBox auswähle, dann kann ich ihn auch in die Spalte schreiben, aber das ABCD dupliziert sich in der ComboBox.
- Bei der Bildlaufleiste habe ich mich ein bißchen unglücklich ausgedrückt. Zuerst wolle ich zwei Buttons machen "VOR" und "ZURÜCK". Wenn man auf den jeweiligen Button klickt, zeigt er den nächsten oder vorherigen Datensatz in dem Kombofeld an. Ich habe das mal in einem Buch gesehen, dass man diese Problematik auch mit einer Bildlaufleiste lösen kann. Aber wenn Du mir das für die Buttons liefern könntest, wäre ich auch schon happy.
DANKE!
Martin
P.S.: Wofür steht q?
Anzeige
AW: Problem mit ComboBox
27.01.2004 16:32:17
q
Hallo, hier ein Code, wo das Value im Combo durch die ScrollBar Bewegungen verandert wird. Ich weiss nicht ob es das ist was du meinst? Die zweite sache mit den duplizierten werten in dem combo adcd weiss ich nicht, da waere gut, wenn ich wieder die ganze datei sehen koennte. Q steht fur -> "ich bin zu faul um etwas langeres zu schreiben". Aber ich heisse Dan und bin ein tscheche :-). q

Private Sub scrVScroll_Change()
' ActiveWindow.ScrollRow = scrVScroll.Value
Me.cboNamen.ListIndex = scrVScroll.Value - 1
End Sub


Private Sub UserForm_Initialize()
Dim vntList As Variant
vntList = ActiveSheet.UsedRange.Columns(COL).Value
If (VarType(vntList) <> vbEmpty And VarType(vntList) <> vbNull) Then
cboNamen.List = vntList
cboNamen.ListIndex = 0
Else
MsgBox "Keine Daten.", vbExclamation
End If
' Werte in das ComboB zugeben :
With Me.cboABCD
.AddItem "A"
.AddItem "B"
.AddItem "C"
.AddItem "D"
.ListIndex = 0
End With
' ScrollBar :
Dim scr As Control
Set scr = Me.scrVScroll
With scr
.Top = Me.Top
.Left = (Me.Left + Me.InsideWidth) - scr.Width
.Height = Me.InsideHeight
.Min = 1
.Max = Me.cboNamen.ListCount
.Value = 1
.SmallChange = 1
.LargeChange = 1
End With
End Sub

Anzeige
AW: Problem mit ComboBox
27.01.2004 16:44:52
q
Ich gehe jetzt nach hause. Falls du noch etwas brauchst, schreib mir : DDMAIL@seznam.cz
Morgen bin hoffentlich auch da :-). Gruss Dan
AW: Problem mit ComboBox
28.01.2004 08:58:46
Martin
Hallo Dan :-)
das mit der Scrollbar war genau das was ich gesucht habe!!! Es funktioniert sogar.
Das mit dem duplizieren habe ich selber gefunden. War ein dummer Fehler.
Ich würde gerne noch 2 Funktionen in das UserForm reinmachen bzw. Fehler beheben:
- Mittlerweile habe ich fast 30 Textfelder in dem Formular. Die fülle ich bzw. speichere ich mit:

Private Sub cboNamen_Change()
Dim WbA As Workbook
Dim Ws1 As Worksheet
Set WbA = Workbooks("crm_db.xls")
Set Ws1 = WbA.Worksheets(1)
Set rng = Ws1.Columns(2).Find(cboNamen.Value, lookat:=xlPart, LookIn:=xlValues)
If Not rng Is Nothing Then
txtEdit.Text = rng.Text
txtEdit.Tag = rng.Address
anrede1 = Range("D" & rng.Row)
Sub speichern_click()
Range(txtEdit.Tag).Offset(0, 1).Value = anrede1.Text 'Anrede1
End Sub

Da besteht noch das Problem, obwohl ich mich genau auf die Datei beziehe, funktioniert das nur, wenn ich in die crm_db.xls vorher geklickt habe. Das UserForm ist in einer anderen Datei.
- Dann würde ich noch gerne wissen, ob auf einfache Weise ein zweites Combofeld für den Namen einfügen kann, ohne, dass es mir gleich die anderen Felder zerhaut.
- Dann habe ich noch ein komisches Phänomen, bei manchen Textfelder wird die Zellenadresse angezeigt und nicht der Inhalt der Zelle, was läuft denn da schon wieder schief?
Vielen Dank an den Excel-Papst!!
Martin
Anzeige
AW: Problem mit ComboBox
28.01.2004 11:06:06
Dan
Hallo Martin, ich weiss nicht, ob ich es alles richt verstehe, aber hier sind einige Antworten :
(Da besteht noch das Problem, obwohl ich mich genau auf die Datei beziehe, funktioniert das nur, wenn ich in die crm_db.xls vorher geklickt habe. Das UserForm ist in einer anderen Datei.)
Range Property (Application, Range, or Worksheet Object)
Remarks
When used without an object qualifier, this property is a shortcut for ActiveSheet.Range (it returns a range from the active sheet; if the active sheet isn’t a worksheet, the property fails). = also wenn man nur Range schreibt, ist es das selbe wie ActiveSheet.Range
Hier ein Beispiel, wie man das loesen koennte :
' *************************************************
' User Form Class Modul :
Option Explicit
Private Const DATEINAME = "crm_db.xls"
Private wrbDatei As Workbook
' hier der Code ...
' ...
' ...

Private Sub UserForm_Initialize()
' hier (wenn die User Form entsteht) muss man der Variable wrbDatei
' eine derRefrentz auf einen existierenden Workbook-Objekt zuordnen,
' (sonst entsteht Fehler 91, Object varible not set ...)
Set wrbDatei = Application.Workbooks(DATEINAME) ' Workbooks Collection
' enthalt nur die geoffnetten
' Books!
' und jetzt wenn man die Range Property benutzt, kann man es mit dem Bezug
' auf die wrbDatei tun :
wrbDatei.ActiveSheet.Range("a1:c3").Copy ThisWorkbook.ActiveSheet.Range("a1")
' man kopiert hier den Range a1:c3 aus der Datei Application.Workbooks(DATEINAME)
' in die Datei, wo der Code ist/lauft, = ThisWorkbook
' also immer wenn man im Code Range benutzt, kann man es als
' wrbDatei.ActiveSheet.Range
' schreiben, und damit zeigt man immer auf einen Range in dem gewissen Workbook
End Sub

' ************************************************************************************
( ... ein zweites Combofeld für den Namen einfügen kann...)
Ein zweites ComboBox kanns du ruig einfugen, denke ich :-). Ich weiss nicht wie es etwas zerhauen koennte.
( ... bei manchen Textfelder wird die Zellenadresse angezeigt und nicht der Inhalt der Zelle ...)
Ich weiss nicht, moglicher Weisse hast du im Code "rng.Text" mit "rng.Address" verwechselt? Etwa so :
txtEdit.Text = rng.Address
txtEdit.Tag = rng.Text
Gruss Dan

Anzeige
AW: Problem mit ComboBox
28.01.2004 13:32:32
Martin
Hallo Dan,
sorry, hat ein wenig gedauert, aber die Änderungen waren teilweise komplizierter.
Namens-ComboBox funktioniert und zerhaut nichts. Die Bildlaufleiste ist auch wunderbar.
Aber irgendwie ist in manchen Textboxen immer noch die blöde Zellenadresse drin. Das komische ist ja bei manchen Feldern zeigt er den wirklichen Inhalt an und bei anderen die Zelladresse.
Kann man das eigentlich so machen, oder gibts da Probleme?
Ich habe: txtEdit.Text = rng.Text und txtEdit.Tag = rng.Adress, stimmt doch?
Und dann lese ich in die jeweiligen Textboxen mit textbox20 = Range("B" & rng.Row) aus.
Und da gibt es manche Textboxen, die nicht mitspielen. Wie kann ich die dazu zwingen???
If Not rng Is Nothing Then
txtEdit.Text = rng.Text
txtEdit.Tag = rng.Address
txtEdit1 = Range("B" & rng.Row)
TextBox20 = Range("F" & rng.Row)
TextBox21 = Range("G" & rng.Row)
TextBox22 = Range("O" & rng.Row)
TextBox23 = Range("Q" & rng.Row)
Label28 = Range("AG" & rng.Row)
Anzeige
AW: Problem mit ComboBox
28.01.2004 14:54:53
Dan
Hallo,
aus dem Code was ich gesehen habe kann ich nichts sehen :-). Das heisst ich weiss nicht wieso einige textboxen die addresse bekommen. Man muss es herausfinden und das ist eben das schone drauf :-). Ich weiss nich ob du weisst, das man das programm schritt fur schritt durchgehen kann und zusehen, was jede zeile des codes macht. Man kann es mit der taste F8 tun. Den cursor in den code postieren und dann F8 drucken (fur jede zeile des codes einmal F8 drucken). Und dabei kann man auch den inhalt der variablen und objecte sehen. Es ist moglich mit : Immediate Window, Locals Window or Watch Window (man findet diese windows im menu "View" im VBA IDE). Versuch es damit und ich bin mir sicher, dass du den fehler schon finden wirst! Falls nicht, dann muesste ich die ganze datei (den vollstandigen code) sehen um das problem finden zu koennen. Gruss Dan
Anzeige
AW: Problem mit ComboBox
28.01.2004 15:09:53
Martin
Hi,
gut ich probier das mal mit dem Einzelschritt.
Dann hätte ich da noch ein Problem, ich habe meine erste ComboBox (NUmmern) für die zweite ComboBox (Namen) einfach kopiert. Jetzt habe ich aber das Problem, wenn ich in im Feld Nummer einen Datensatz auswähle und was ändere ist alles ok. Nur wenn ich über Namen den Datensatz auswähle und was ändere verschiebt sich alles. Kann man da irgendwie zur Orientierung einen festen Bezugspunkt definieren.
Danke!
Martin
AW: Problem mit ComboBox
28.01.2004 15:53:38
Dan
Hallo,
ja, wenn du den zweiten Combo kopiert hast, kann es sein, das es einige eigenschaften von den ersten (source) inherited-geerbt hat :-). Also wenn du einen "Wirgin-Combo" brauchst, mache es ganz neu (Tolls/comboBox und Drag and drop auf den User Form, ich weiss nicht genau wie man das zu deutsch sagt.
Bezugs punkt :
ich weiss nicht genau, wie du es meinst, es waeren reine spekulationen etwas zu sagen ohne den code zu sehen :-). Ich gehe jetzt nach haus, also erst morgen wieder :-) Ich helfe dir gerne, damit es ganz so lauft wie du es dir wunschst :-). Gruss D.
AW: Problem mit ComboBox
29.01.2004 08:57:55
Martin
Hi Dan,
ich habe Dir die Datei mal gemailt.
;-)
Danke!
Martin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige