Dez 1899 ausblenden in textbox
#1
Guten Tag, ich habe eine UF mit TextBoxen

Die so Formatiert werden

Code:
Me.txtG20 = Format(Me.txtG20, "MMM YYYY")

Die Zelle, aus die TextBox ihre Werte nimmt, hat die Formel

='[Tabelle1.xlsm]Personal'!L7

jetzt steht in der Tabelle 01.01.1990, was ich schon Ausblende

aber in der UF steht ohne Format: 00:00:000 und mit Dez 1899.

Frage:
Wie bekomm ich aus dem Dez 1899 eine "0" oder am besten eine leere TextBox. Aber wenn in die Zelle dann ein richtiges Datum drin steht soll das schon angezeigt werden.
Top
#2
Hallo,

Code:
if isdate(workbooks("Tabelle1.xlsm").Worksheets("Personal").Range("L7")) then Me.txtG20 = Format(Me.txtG20, "MMM YYYY")
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Kaywarri124
Top
#3
Wow schnelle Antwort danke Steffl,

doch zu meinem bedauern sehe ich das ich da wohl wichtige Infos weggelassen habe.

Die Workbooks("Tabelle1").Worksheets("Personal")  ist nicht geöffnet, sie liegt auf einem ganz anderen Laufwerk auf das nur ich zugriff habe.

Daher steht auch in jeder Zelle ='[Tabelle1.xlsm]Personal'!XX

und dazu zu wissen ist...

es ist eine Liste aus vielen Daten. L7 ist in dem fall nur ein Beispiel.

Es handelt sich um 9 TextBoxen in 9 Spalten von L2:T2. Diese stehen in Zusammenhang mit einer Textbox ( txt_Nachname )

Fazit:
Deine Lösung ist für mich zu starr :s
Top
#4
Letztendlich muss ja nur das Format der TextBox so gestaltet werden.

Das bei Dez 1899/00:00:0000 bzw. wenn die Zelle den werden "0" hat, die TextBox leer ist

und bei einem Datum "MMM YYYY" anzeigt
Top
#5
Hallo,

(29.08.2017, 15:08)Kaywarri124 schrieb: Die Workbooks("Tabelle1").Worksheets("Personal")  ist nicht geöffnet, sie liegt auf einem ganz anderen Laufwerk auf das nur ich zugriff habe.

Daher steht auch in jeder Zelle ='[Tabelle1.xlsm]Personal'!XX

und dazu zu wissen ist...

um auf eine geschlossene Datei zuzugreifen zu können, könntest Du zum Beispiel die Funktion GetDataClosedWB von Thomas Ramel verwenden. Zumindest Du könntest dann die Daten auslesen.
Gruß Stefan
Win 10 / Office 2016
Top
#6
Guten Morgen,
ich habe das jetzt mal gesucht und umgeschrieben.

Läuft perfekt, danke Steffl für den Tip

Code:
Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, sourceSheet As String, _
SourceRange As String, TargetRange As Range) As Boolean
Dim strQuelle As String
Dim Zeilen As Long
Dim Spalten As Byte
On Error GoTo InvalidInput
strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range(SourceRange).Cells(7, 11).Address(0, 0)
Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count
With TargetRange.Cells(2, 9).Resize(Zeilen, Spalten)
.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
.Value = .Value
End With
GetDataClosedWB = True
Exit Function
InvalidInput:
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, "Get data from closed Workbook"
GetDataClosedWB = False
End Function

Public Sub Daten_holen_OJ_alt() ' Die Funktion arbeitet mit der obigen GetDataClosedWB zusammen
Dim Pfad As String
Dim Dateiname As String
Dim Blatt As String
Dim Bereich As String
Dim Ziel As Range
Pfad = "I:\Lw\30158920\AUSTAUSCH\1.TStff\Meldungen\Betriebsarzt\" '-> Funktioniert nicht
Dateiname = "BA LISTE1.xlsm" ' aus welcher Datei soll er holen? -> Funktioniert nicht
Blatt = "Personal " ' von welchem Tabelleblatt soll er holen? -> Funktioniert nicht
Bereich = "K7:AA300" ' aus welchem Bereich soll er holen? -> Funktioniert
Set Ziel = ActiveSheet.Range("I2:Q2") ' in welchen Bereich soll er kopieren? -> Funktioniert
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Datenimport abgeschlossen"
End If
End Sub
Top
#7
Hallo,

Du hattest heute früh ja geschrieben, dass es nicht gehen würde. Jetzt geht es auf einmal. Ich weiß ja nicht, was Du geändert hast aber ich bezweifele, dass es korrekt geht denn so ganz hast Du die Funktion nicht verstanden.

Code:
strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range(SourceRange).Cells(7, 11).Address(0, 0)
Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count
With TargetRange.Cells(2, 9).Resize(Zeilen, Spalten)

Was soll das Cells(7,11) und Cells(2,9) nach dem Range bzw TargetRange? Hier verschiebst Du den Bereich. Siehe auch mein Codebeispiel

Code:
Sub prcKat()
   Dim strBereich As String
  
   strBereich = "K7:AA300"
   prcUebergabe strBereich
End Sub


Sub prcUebergabe(strTargetbereich As String)
   Dim lngSpalten As Long, lngZeilen As Long
  
   lngSpalten = Range(strTargetbereich).Columns.Count
   lngZeilen = Range(strTargetbereich).Rows.Count
   MsgBox Range(strTargetbereich).Cells(7, 11).Resize(lngZeilen, lngSpalten).Address
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Kaywarri124
Top
#8
Ohmann das tut mir aber jetzt leid, Danke das du nochmal drüber geschaut hast.

Ich habe das natürlich geändert.

Code:
Public Function GetDataClosedWB(SourcePath As String, _
                                SourceFile As String, _
                                sourceSheet As String, _
                                SourceRange As String, _
                                TargetRange As Range) As Boolean

 Dim strQuelle       As String
Dim Zeilen          As Long
Dim Spalten         As Byte

   On Error GoTo InvalidInput

   strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & _
               sourceSheet & "'!" & _
               Range(SourceRange).Cells(1, 1).Address(0, 0)

   Zeilen = Range(SourceRange).Rows.Count
   Spalten = Range(SourceRange).Columns.Count

   With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
      .Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
      .Value = .Value
   End With

   GetDataClosedWB = True
   Exit Function

InvalidInput:
   MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", _
          vbExclamation, "Get data from closed Workbook"
   GetDataClosedWB = False
End Function

Private Sub UserForm_Initialize()
         
     Dim Pfad            As String
Dim Dateiname       As String
Dim Blatt           As String
Dim Zellen As String

    Pfad = "I:\Lw\xxxxxx\xxxxxxxx\xxxxxxxx\xxxxxxxxx\"
    Dateiname = "xxxxxxx.xlsm"
    Blatt = "xxxxxxx"
    Zellen = "K7:AA300" 'auch ein Bereich ist möglich: "B10:C20"

    If GetDataClosedWB(Pfad, _
            Dateiname, _
            Blatt, _
            Zellen, _
            Worksheets("usernamen").Range("I2")) Then
       
    End If


'hier geht mein Code weiter
Danke nochmals, schön Tag noch :)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste