Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
788to792
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
788to792
788to792
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

auf aktives Tabellenblatt umstellen

auf aktives Tabellenblatt umstellen
03.08.2006 11:56:08
Wolfgang
Hallo*
irgendwie komme ich nicht weiter. Mit untenstehendem Code möchte ich erreichen, dass in einer UF die Textfelder aus einem Tabellenblatt "Daten" gefüllt werden. Das gelingt auch soweit. Über CmdÜbernehmen soll erreicht werden, dass der Inhalt der Textfelder nun in das jeweils aktive Tabellenblatt eingetragen wird. Ich bekomme es leider nicht hin. Die Daten werden jetzt immer in das Tabellenblatt "Daten" eingetragen. Kann mir da vielleicht jemand weiterhelfen? -Schon jetzt Danke für die Rückmeldungen.
Herzliche Grüße
Wolfgang

Private Sub UserForm_Activate()
Textfelder_Fuellen
End Sub

Sub Textfelder_Fuellen()
With Sheets("Daten").Activate
' Spaltenformat soll überall Standard sein
Cells.Select
Selection.NumberFormat = "General"
Columns("DD:DD").Select
Selection.NumberFormat = "m/d/yyyy"
'Anrede + ggfs. Titel CX2 und CY2
txtAnrede.Text = Range("CX2").Text & Space(1) & Range("CY2").Text
'Name + ggfs. Namenszusatz DB2 und DA2
If Range("DA2").Text = "" Then
txtName.Text = Range("DB2").Text & Space(1) & Range("DA2").Text
Else
txtName.Text = Range("DB2").Text & "," & Space(1) & Range("DA2").Text
End If
'Vorname CZ2
txtVorname.Text = Range("CZ2").Text
'Kundennummer FG2
txtKDnr.Text = Range("FG2").Text
End With
End Sub

Private Sub cmdÜbernehmen_Click()
Dim lngAnz As Long
Dim objtbl As Object
Dim strLinkAdresse As String
Dim strRange As String
If txtName <> "" Then
'Neuen Eintrag in Liste einfügen
Range("A2").Select
Set objtbl = ActiveCell.CurrentRegion
'Anzahl der Zeilen der Tabelle ermitteln
lngAnz = objtbl.Rows.Count - CON_ANZAHL_HEADER_OFFSET
'Name
Range("A2").Offset(lngAnz + 1).Value = txtName
'Vorname
Range("B2").Offset(lngAnz + 1).Value = txtVorname
'Kundennummer
Range("I2").Offset(lngAnz + 1).Value = txtKdnr
'Anrede
Range("L2").Offset(lngAnz + 1).Value = txtAnrede
'sortieren
strRange = "A2:U" + Trim$(Str$(lngAnz + 2 + CON_ANZAHL_HEADER_OFFSET))
Range(strRange).Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Unload Me
Else
MsgBox "Textfeld Name,Vorname darf nicht leer sein." & Chr$(10) & "Eintrag wird nicht übernommen.", vbInformation
txtName.SetFocus
End If
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: auf aktives Tabellenblatt umstellen
03.08.2006 12:13:55
u_
Hallo,
ungetestet:

Private Sub UserForm_Activate()
Textfelder_Fuellen
End Sub

Sub Textfelder_Fuellen()
With ActiveSheet
' Spaltenformat soll überall Standard sein
.Cells.NumberFormat = "General"
.Columns("DD:DD").NumberFormat = "m/d/yyyy"
'Anrede + ggfs. Titel CX2 und CY2
txtAnrede.Text = .Range("CX2").Text & Space(1) & .Range("CY2").Text
'Name + ggfs. Namenszusatz DB2 und DA2
If Range("DA2").Text = "" Then
txtName.Text = .Range("DB2").Text & Space(1) & .Range("DA2").Text
Else
txtName.Text = .Range("DB2").Text & "," & Space(1) & .Range("DA2").Text
End If
'Vorname CZ2
txtVorname.Text = .Range("CZ2").Text
'Kundennummer FG2
txtKdnr.Text = .Range("FG2").Text
End With
End Sub

Private Sub cmdÜbernehmen_Click()
Dim lngAnz As Long
Dim objtbl As Object
Dim strLinkAdresse As String
Dim strRange As String
If txtName <> "" Then
With ActiveSheet
'Neuen Eintrag in Liste einfügen
Set objtbl = .Range("A2").CurrentRegion
'Anzahl der Zeilen der Tabelle ermitteln
lngAnz = objtbl.Rows.Count - CON_ANZAHL_HEADER_OFFSET
'Name
.Range("A2").Offset(lngAnz + 1).Value = txtName
'Vorname
.Range("B2").Offset(lngAnz + 1).Value = txtVorname
'Kundennummer
.Range("I2").Offset(lngAnz + 1).Value = txtKdnr
'Anrede
.Range("L2").Offset(lngAnz + 1).Value = txtAnrede
'sortieren
strRange = "A2:U" + Trim$(Str$(lngAnz + 2 + CON_ANZAHL_HEADER_OFFSET))
.Range(strRange).Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Unload Me
End With
Else
MsgBox "Textfeld Name,Vorname darf nicht leer sein." & Chr$(10) & "Eintrag wird nicht übernommen.", vbInformation
txtName.SetFocus
End If
End Sub

Gruß
Lesen gefährdet die Dummheit
Anzeige
AW: auf aktives Tabellenblatt umstellen
03.08.2006 12:34:32
Luschi
Hallo Wolfgang,
der erste Befehl in der folgenden Procedure macht die Tabelle "Daten" zum ActiveSheet
Sub Textfelder_Fuellen()
With Sheets("Daten").Activate
End Sub
''Hier muß man mit Objekt-Variablen arbeiten:
Option Explicit
Dim active_xSheet As Worksheet
Private Sub UserForm_Activate()
''die Variable active_xSheet ist jetzt Stellvertreter für das ActiveSheet
''zum Zeitpunkt des Formularaufrufs
Set active_xSheet = ActiveSheet
''aus welcher Tabelle die Daten kommen, sollte man als Text-Parameter übergeben
Textfelder_Fuellen "Daten"
End Sub
Sub Textfelder_Fuellen(ByVal x_Sheet As String)
Dim mySheet As Worksheet
''die Tabelle, aus der die Daten kommen wird als Objekt-Variable definiert
Set mySheet = ThisWorkbook.Worksheets(x_Sheet)
''alle Range- und Cells-Befehle benötigen 1 Punkt davor,
''damit sich diese Anweisungen auf das mySheet-Objekt beziehen
''auf die Select- und Selection-Befehle  sollte man verzichten, da
''dadurch  das ActiveCell-Objekt und indirekt auch das ActiveSheet-Objekt sich ändern
With mySheet
' Spaltenformat soll überall Standard sein
.Cells.NumberFormat = "General"
.Columns("DD:DD").NumberFormat = "m/d/yyyy"
'Anrede + ggfs. Titel CX2 und CY2
Me.txtAnrede.Text = .Range("CX2").Text & Space(1) & .Range("CY2").Text
'Name + ggfs. Namenszusatz DB2 und DA2
If .Range("DA2").Text = "" Then
Me.txtName.Text = .Range("DB2").Text & Space(1) & .Range("DA2").Text
Else
Me.txtName.Text = .Range("DB2").Text & "," & Space(1) & .Range("DA2").Text
End If
'Vorname CZ2
Me.txtVorname.Text = .Range("CZ2").Text
'Kundennummer FG2
Me.txtKDnr.Text = .Range("FG2").Text
End With
End Sub

Versuche jetzt mal diese Routinen umzusetzen. Wenn das klappt, können wir die andere Routine auch noch anpassen. leider wünscht mein Cheff jetzt, daß ich wieder etwas für Ihn tue.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: auf aktives Tabellenblatt umstellen
03.08.2006 15:39:22
Wolfgang
Hallo Luschi,
Danke für Deine Ausarbeitung bzw. Hinweise zur Umsetzung. Ich habe versucht, das so umzusetzen, die Textfelder der UF bleiben allerdings dabei leer. Aus dem Sheet Daten soll sich die UF ja die Daten zum Füllen der Textfelder holen, deswegen wahrscheinlich die Umstellung auf Textfelder_Fuellen "Daten". Wo ist die Schnittstelle, in der ich evtl. etwas übersehen habe? Oder anders gefragt, wodurch werden die Textfelder in der UF aus den angegebenen Zellen in der Tabelle "Daten" beschickt? - Danke schon jetzt wieder für Deine Rückantwort.
Gruß - Wolfgang
AW: auf aktives Tabellenblatt umstellen
03.08.2006 16:45:29
Luschi
Hallo Wolfgang,
bei klappt das so:
https://www.herber.de/bbs/user/35552.xls
Gruß von Luschi
aus klein-Paris
Anzeige
AW: auf aktives Tabellenblatt umstellen
04.08.2006 07:26:58
Wolfgang
Hallo Luschi,
kann leider auf dem Dienstrechner nicht downloaden; werde heute abend zuhause downloaden und mich dann wieder melden. Danke und bis dahin....
herzliche Grüße
Wolfgang
Danke Luschi!!!!
05.08.2006 14:29:07
Wolfgang
Hallo Luschi,
Danke für Deine erneute Rückmeldung und für die Ausarbeitung; Das ist genau, wie ich es mir vorgestellt hatte, aber niemals so hätte realisieren können; Super auch Deine erläuternden Kommentare, da weiß man, warum was gemacht wird. Herzlichen Dank dafür und weiterhin alles Gute.
Gruß - Wolfgang

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige