Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  sheetoffset und Datum

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  sheetoffset und Datum (1102 mal gelesen)
daniu
Mitglied
Mechanik-Entwickler


Sehen Sie sich das Profil von daniu an!   Senden Sie eine Private Message an daniu  Schreiben Sie einen Gästebucheintrag für daniu

Beiträge: 866
Registriert: 03.11.2004

Intel Xeon W3550
12GB RAM; NVidia Quadro 4000
Win 7 Enterprise 64bit; NX7.5
TeamCenter 8

erstellt am: 08. Nov. 2012 13:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

ich verwende schon länger die Funktion Sheetoffset von hier: http://j-walk.com/ss/excel/tips/tip63.htm

Code:
Function SHEETOFFSET(offset, Ref)
'  Returns cell contents at Ref, in sheet offset
    Application.Volatile
    With Application.Caller.Parent
        SHEETOFFSET = .Parent.Sheets(.Index + offset) _
        .Range(Ref.Address).Value
    End With
End Function

Bisher hat das immer gut geklappt, aber jetzt möchte ich gerne ein Datum von einer Seite zur anderen bringen.
1904 ist eingeschaltet, aber auf dem Folgeblatt landet das Datum trotzdem falsch. Aus

1.1.2013 wird 2.1.2017

Wie könnte ich das ändern, so dass der richtige Wert raus kommt?

Gruß
Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daniu
Mitglied
Mechanik-Entwickler


Sehen Sie sich das Profil von daniu an!   Senden Sie eine Private Message an daniu  Schreiben Sie einen Gästebucheintrag für daniu

Beiträge: 866
Registriert: 03.11.2004

Intel Xeon W3550
12GB RAM; NVidia Quadro 4000
Win 7 Enterprise 64bit; NX7.5
TeamCenter 8

erstellt am: 08. Nov. 2012 14:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

hab das jetzt Mal so umgestrickt, betrachte es aber als Workaround:

Code:
Function SHEETOFFSET(offset, Ref)
'  Returns cell contents at Ref, in sheet offset
    Application.Volatile
    With Application.Caller.Parent
      Add = 0
      If (IsDate(.Parent.Sheets(.Index + offset) _
        .Range(Ref.Address))) Then
        Add = -1462
      End If
        SHEETOFFSET = .Parent.Sheets(.Index + offset) _
        .Range(Ref.Address).Value + Add
    End With
End Function

Gruß
Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Comos User
Mitglied



Sehen Sie sich das Profil von Comos User an!   Senden Sie eine Private Message an Comos User  Schreiben Sie einen Gästebucheintrag für Comos User

Beiträge: 112
Registriert: 23.03.2010

erstellt am: 09. Nov. 2012 09:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für daniu 10 Unities + Antwort hilfreich

Moin Daniel,

Ja ja Excel und die Datumswerte, eine unendliche Geschichte

Also ohne viel labern:

1. Du kannst Value2 nutzen

Code:
Function SHEETOFFSET(offset, Ref)
'  Returns cell contents at Ref, in sheet offset
    Application.Volatile
    With Application.Caller.Parent
              SHEETOFFSET = .Parent.Sheets(.Index + offset) _
        .Range(Ref.Address).Value2
    End With
End Function

kugst du hier http://support.microsoft.com/kb/182812/de

2. Dein Workflow müste korrekterweise um eine Abfrage ob überhaupt '1904' genutzt wird ergänzt werden

Code:
Function SHEETOFFSET(offset, Ref)
'  Returns cell contents at Ref, in sheet offset
    Application.Volatile
    With Application.Caller.Parent
      Add = 0
      If (IsDate(.Parent.Sheets(.Index + offset) _
        .Range(Ref.Address))) And ActiveWorkbook.Date1904 Then
        Add = -1462
      End If
        SHEETOFFSET = .Parent.Sheets(.Index + offset) _
        .Range(Ref.Address).Value + Add
    End With
End Function

3. wenn irgent möglich würde ich auf "Date1904" verzichten.

Hilfreicher Tip  solche Leute müßte man prügeln, diesen hilfreichen Tip ohne Erwähnung der "Nebeneffekte" zu propagieren.
besser ist da schon anderer Tip


Gruß
Peter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daniu
Mitglied
Mechanik-Entwickler


Sehen Sie sich das Profil von daniu an!   Senden Sie eine Private Message an daniu  Schreiben Sie einen Gästebucheintrag für daniu

Beiträge: 866
Registriert: 03.11.2004

Intel Xeon W3550
12GB RAM; NVidia Quadro 4000
Win 7 Enterprise 64bit; NX7.5
TeamCenter 8

erstellt am: 09. Nov. 2012 12:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

super, vielen Dank.

Ohne 1904 einzustellen hatte ich probiert, dann müsste ich aber nen Workaround für negative Zeiten suchen (ich weiß, das gibt's) außerdem müsste ich sehr viele Tabellenblätter korrigieren.

Gruß

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daniu
Mitglied
Mechanik-Entwickler


Sehen Sie sich das Profil von daniu an!   Senden Sie eine Private Message an daniu  Schreiben Sie einen Gästebucheintrag für daniu

Beiträge: 866
Registriert: 03.11.2004

Intel Xeon W3550
12GB RAM; NVidia Quadro 4000
Win 7 Enterprise 64bit; NX7.5
TeamCenter 8

erstellt am: 12. Nov. 2012 08:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

nur zur Info:

hab das jetzt auch für Range Objekte erweitert:

Code:

Function SHEETOFFSET(offset, Ref) As Variant
    Application.Volatile
    If (Ref.Cells.Count > 1) Then
      With Application.Caller.Parent
        Set SHEETOFFSET = .Parent.Sheets(.Index + offset).Range(Ref.Address)
      End With
    Else
      With Application.Caller.Parent
        SHEETOFFSET = .Parent.Sheets(.Index + offset).Range(Ref.Address).Value2
      End With
    End If
End Function

Grüße
Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Comos User
Mitglied



Sehen Sie sich das Profil von Comos User an!   Senden Sie eine Private Message an Comos User  Schreiben Sie einen Gästebucheintrag für Comos User

Beiträge: 112
Registriert: 23.03.2010

erstellt am: 12. Nov. 2012 11:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für daniu 10 Unities + Antwort hilfreich

Hi,

nur mal aus interesse.

Welchen Sinn macht eine Funktion, welche mal einen Wert und mal einen Bereich liefert. Wo bzw wie kann man soetwas benutzen?

Eine Funktion für Werte und eine für Bereiche kann ich mir noch vorstellen, oder auch die Steuerung (des Rückgabetyps) über einen weiteren (optionalen) Parameter.
Aber ich lerne ach gern noch dazu.

Gruß
Peter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daniu
Mitglied
Mechanik-Entwickler


Sehen Sie sich das Profil von daniu an!   Senden Sie eine Private Message an daniu  Schreiben Sie einen Gästebucheintrag für daniu

Beiträge: 866
Registriert: 03.11.2004

Intel Xeon W3550
12GB RAM; NVidia Quadro 4000
Win 7 Enterprise 64bit; NX7.5
TeamCenter 8

erstellt am: 12. Nov. 2012 12:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

hmmm - ist nur Faulheit. Vorher hatte ich 2 Funktionen, wie von Dir geschrieben. So muss ich mir nur eine Bezeichnung merken.

Ist mir schon klar, dass das so weniger performant ist, aber darauf ist ja eh nicht der Fokus

Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz