Anzeige
Archiv - Navigation
900to904
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
900to904
900to904
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Eingabemaske, daten aus anderer Tabelle
03.09.2007 21:38:00
roger
Hallo, ich habe eine Eingabemaske mit Textboxen. Funktioniert alles super. Nun will ich aber die Eingabemaske auf einem anderen Tabellenblatt erscheinen lassen, als dem Arbeitsblatt in welchem die Daten gelesen oder geschrieben werden sollen. Das krieg ich jedoch nicht hin. Kann mir da jemand helfen? Den ganzen Code habe ich unten angehängt.
Vielen Dank

Private Sub ComboBox1_Click()
If ComboBox1.ListIndex  0 Then
TextBox1 = Cells(ComboBox1.ListIndex + 1, 4)
TextBox1 = Replace(TextBox1.Value, ",", ".")
TextBox2 = Cells(ComboBox1.ListIndex + 1, 5)
TextBox2 = Replace(TextBox2.Value, ",", ".")
TextBox3 = Cells(ComboBox1.ListIndex + 1, 6)
TextBox3 = Replace(TextBox3.Value, ",", ".")
TextBox4 = Cells(ComboBox1.ListIndex + 1, 7)
TextBox4 = Replace(TextBox4.Value, ",", ".")
TextBox5 = Cells(ComboBox1.ListIndex + 1, 8)
TextBox5 = Replace(TextBox5.Value, ",", ".")
TextBox6 = Cells(ComboBox1.ListIndex + 1, 9)
TextBox6 = Replace(TextBox6.Value, ",", ".")
TextBox7 = Cells(ComboBox1.ListIndex + 1, 10)
TextBox7 = Replace(TextBox7.Value, ",", ".")
TextBox8 = Cells(ComboBox1.ListIndex + 1, 1)
Else
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
End If
End Sub



Private Sub CommandButton1_Click()
If ComboBox1.ListIndex > 0 Then
Rows(ComboBox1.ListIndex + 1).Delete
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
UserForm_Initialize
End If
End Sub



Private Sub CommandButton2_Click()
Dim xZeile As Long
If TextBox1 = "" Then Exit Sub
If ComboBox1.ListIndex = 0 Then
xZeile = [D65536].End(xlUp).Row + 1
Else
xZeile = ComboBox1.ListIndex + 1
End If
Cells(xZeile, 4) = (TextBox1)
Cells(xZeile, 5) = (TextBox2)
Cells(xZeile, 6) = (TextBox3)
Cells(xZeile, 7) = (TextBox4)
Cells(xZeile, 8) = (TextBox5)
Cells(xZeile, 9) = (TextBox6)
Cells(xZeile, 10) = (TextBox7)
Cells(xZeile, 1) = CDate(TextBox8)
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
Columns("A:I").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
UserForm_Initialize
End Sub



Private Sub CommandButton3_Click()
Unload Me
End Sub



Private Sub TextBox1_Change()
End Sub



Private Sub TextBox8_Change()
End Sub



Private Sub UserForm_Initialize()
Dim aRow, i As Long
Application.EnableEvents = False
ComboBox1.Clear
aRow = [D65536].End(xlUp).Row
ComboBox1.AddItem "choose Date"
For i = 2 To aRow
ComboBox1.AddItem Cells(i, 1)
Next i
ComboBox1.ListIndex = 0
Application.EnableEvents = True
End Sub


7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingabemaske, daten aus anderer Tabelle
03.09.2007 22:51:00
Daniel
Hi
verwende keine Steuerelemente, sondern eine Userform.
die ist unabhängig vom aktiven Tabellenblatt oder der aktiven Datei.
Gruß, Daniel

AW: Eingabemaske, daten aus anderer Tabelle
04.09.2007 00:28:04
Herby
Hallo Roger,
schreibe vor jedem Range-Objekt noch das entsprechende Tabellenobjekt davor.
Z.B.
TextBox1 = worksheets("Tabelle1").Cells(ComboBox1.ListIndex + 1, 4)
TextBox1 = worksheets("Tabelle1").Replace(TextBox1.Value, ",", ".")
TextBox2 = worksheets("Tabelle1").Cells(ComboBox1.ListIndex + 1, 5)
......
oder einfacher:
with worksheets("Tabelle1")
TextBox1 = .Cells(ComboBox1.ListIndex + 1, 4)
TextBox1 = Replace(TextBox1.Value, ",", ".")
TextBox2 = .Cells(ComboBox1.ListIndex + 1, 5)
TextBox2 = Replace(TextBox2.Value, ",", ".")
TextBox3 = .Cells(ComboBox1.ListIndex + 1, 6)
TextBox3 = Replace(TextBox3.Value, ",", ".")
......
end with
viele Grüße
Herby

Anzeige
AW: Eingabemaske, daten aus anderer Tabelle
04.09.2007 07:42:30
roger
Vielen Dank für eure Hilfe. Da ich nun schon so viel Zeit investiert habe und die Sache eigentlich gut funktioniert werde ich keine Userform mehr machen. Ich werde das =Worksheets("Tabelle1").Cell.... noch heute ausprobieren und werde dann Bescheid geben.
Danke nochmals und viele Grüsse,
Roger

AW: Eingabemaske, daten aus anderer Tabelle
04.09.2007 11:35:57
roger
Aus irgendeinem Grund funktioniert das nicht. Es werden immer die Daten aus dem Blatt eingelesen, in welchem die Eingabemaske erscheint. Ich habe mal die Arbeitsmappe angehängt. Vieleicht hilft das das Problem zu sehen.
https://www.herber.de/bbs/user/45670.xls

Anzeige
AW: Eingabemaske, daten aus anderer Tabelle
04.09.2007 13:00:00
Daniel
Hi
ums mal festzustellen, du hast eine Userform!
im Code steht aber bei keinem Zellbezug davor, auf welches Sheet er sich beziehen soll, dh. er nimmt immer das gerade aktive Sheet.
wenn ich die Userform sich nicht auf das gerade zufällig aktive, sondern immer auf ein bestimmtes Sheet beziehen soll, mußt du das im Code auch so schreiben, dh. du musst zu jedem Zellbezug den Sheet-Bezug mit angeben, in der Form

Sheets("Klima_Boden_Werte").Cells(1,1)


das gilt für alle Zellbezüge, dh. Cells(), Range(), Columns(), Rows() und auch die Zellbezüge, die in [ ]-Klammern stehen.
Es müssen auch alle Zellbezüge angepasst werden, die innerhalb einer SORT- oder FIND- Anweisung stehen (die werden gerne mal vergessen)
wird eine RANGE über zwei CELLS definiert Range(Cells(1,1), Cells(3,3)), dann muss der Sheet-Bezug jeweils vor beiden CELLS stehen und NICHT vor RANGE, dh. Range(sheet(xxx).cells(1,1), sheets(xxx).cells(3,3))
das ist jetzt ein bisschen ne Fleißarbeit für dich, aber gibt da ein paar Methoden, sich die Arbeit zu erleichtern:
Variablen
1. du dimensionierst dir direkt unter Option Expicit eine Worksheetvariable, diese kann von allen Makros verwendet werden
Dim SH as Worksheet
2. im Makro Userform_initialize weist du der Worksheetvariable das Sheet zu
Set SH = Sheets("Klima_Boden_Werte")
3. in allen anderen Makros kannst du dann anstelle der ausfürlichen Beschreibung nur noch diese Objektvariable verwenden, dh du schreibst
SH.Cells(1,1) anstelle von Sheets("Klima_Boden_Werte").cells(1,1)
With-Klammer verwenden
man kann auch durch die With-Klammer Schreibarbeit sparen, anstelle von


TextBox1 = Sheets("Klima_Boden_Werte").Cells(ComboBox1.ListIndex + 1, 4)
TextBox2 = Sheets("Klima_Boden_Werte").Cells(ComboBox1.ListIndex + 1, 5)
TextBox3 = Sheets("Klima_Boden_Werte").Cells(ComboBox1.ListIndex + 1, 6)


schreibt man:


with Sheets("Klima_Boden_Werte")
TextBox1 = .Cells(ComboBox1.ListIndex + 1, 4)
TextBox2 = .Cells(ComboBox1.ListIndex + 1, 5)
TextBox3 = .Cells(ComboBox1.ListIndex + 1, 6)
end with


dh. daß was bei WITH definiert ist, kann man im Folgecode einfach durch einen . ersetzen, solange bis die Klammer wieder mit END WITH geschlossen wird.
Gruß, Daniel

Anzeige
AW: Eingabemaske, daten aus anderer Tabelle
04.09.2007 15:31:59
Herby
Hallo Roger,
ich habs dir mal angepasst. Da ich nicht weiss welches Tabellenblatt du verwendest, habe ich
mal eine Inputbox dazu gemacht.
https://www.herber.de/bbs/user/45679.xls
Viele Grüße
Herby

AW: Eingabemaske, daten aus anderer Tabelle
04.09.2007 17:15:00
roger
Wow, das funktioniert super! Vielen Dank.

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige