Collapse column

Autor Thema: Office 2003: VBA - Hilfe  (Gelesen 3871 mal)

Offline fajo

  • Newbie
  • *
  • Beiträge: 4
    • Profil anzeigen
  • Office-KnowHow: Anfänger
  • VBA-KnowHow- : Ohne
  • Version [Office] : Office 2003
Office 2003: VBA - Hilfe
« am: Dezember 18, 2014, 22:02:09 Nachmittag »
Hallo Leute

Ich hoffe ihr könnt mir helfen. Ich habe 2003 Version und bekomme einige sachen nicht so hin wie ich es will.
In meiner Firma mus ßch die Formulare der Dienstpläne machen und da hoffe ich das ihr mir mit euren Wissen helfen könnt. von Januar bis Dezember

Es geht darum:
inder spalte c3: c33 wir die Arbeitszeit eingetragen; hin und wierder steht das auch krank, frei oder Urlaub;
din der spalte e3:e33 sehten dann die Stunden Z.B.: 7,5; 8; 9 und so weiter.

ich bekomme zusammen die einzelnen Sachen mit =Zählewenn zu zählen. Mein Problem ist nun wenn

c3:c7 Krank  e3:e7 z.B. 8 Stunden sind und dann in C25:c30 weder Krank steht wie kann ich mit einem Makro in der zelle z.b. e45 sagen das diese Person 80 Stunden krank war.
 
Wie kann ich weiters noch machen wenn in A3:A33 irgendwo SA oder So steht dann soll der Makro die Wochenenden mit der Farbe z.B. 20 als hintergrund nehmen. Die Tabelle hat aber unterschiedlieche spaltenanzahl

Weiers brauche ich eine Strich unr jeden Sonntag; Der sonntag sollte aber nur einen Strich beommen wenn 2 Zlen Weiter ein Freitag ist. Es hat keinen Sinn wenn bei einen Sonntg gleich in A3 ist denn dieser Sonntag wird mit der nächsten woche abgerechnet. in einer Spalte P hte ich die Zahlen Der Wochen wobei der Sonntag mit 1 Montag mit 2 usw.

Ferner habe ich noch: dieses Programm: funktioniert super nur eine kleine Abänderung bekomme ich nciht hin
Der Tabellen name sollte als link funktionieren. Wenn ich darauf kliche soll ich zur Tabelle kommen


Sub TabellenDokomentieren()

Dim Blatt As Worksheet
Dim Zeile As Integer

Zeile = 1

' löscht die  Spalten a und b

    Range("A:A,B:B").Select
    Selection.ClearContents
    Range("A1").Select

For Each Blatt In ThisWorkbook.Worksheets

  Tabelle4.Cells(Zeile + 14, 2).Value = Blatt.CodeName ' Gibt den Tabellen Namen an
  Tabelle4.Cells(Zeile + 14, 1).Value = Blatt.Name ' 1 gibt die Spalte an
  Zeile = Zeile + 1
Next Blatt
End Sub

und noch was:

wenn ich mir den Febrar 2015 aehe der hat ja nur 28 Tage. Meine Berechnungen gehen aber Automatisch bis 31 Tage. Folglich ist am 29 bis 31 ein Falscher Wert. Wie kann ich diese Zeilen aus allen monaten herausnehmen einfach löschen.

Dieses Programm hängt sich immer auf aufgrund des obigen fehlers

Sub Diferenzberechnung()
'
'    in schleife alle Tageszeilen durchlaufen
    Zeile = 3
next_zeile:
    Zeile = Zeile + 1
'      bereich durch ?
    If Zeile > 40 Then GoTo end_zeile
    'End If
'
'      zeilen-nr als string
    zeilex = CStr(Zeile)
'
'      hereinholen Wochentag-Nr. aus Sp-P
    Set wert = Range("P" + zeilex)
'
'      abfrage auf SO
    If wert <> 1 Then GoTo next_zeile
    'End If
'
'      formel eintragen in Sp-G
    Range("G" + zeilex).Select
   
    ActiveCell.FormulaR1C1 = "=R[-1]C-R[-2]C"
   
'      fertig, nächste zeile
    GoTo next_zeile
end_zeile:
'      ganze Tagestab ist durch
'
End Sub

Einstweilen eine letzte Frage.

wie kann ich Range("G36").FormulaLocal = ("=Summe(D3:E34)")
dies so schreiben das ich die =Zählwenn formel anwenden kann

Bitte Danke.

www.vkaufee.de

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline hp

  • Newbie
  • *
  • Beiträge: 8
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Sehr gut
  • Version [Office] : Office 2010
Antw:Office 2003: VBA - Hilfe
« Antwort #1 am: Dezember 21, 2014, 01:00:30 Vormittag »
Hallo fajo,

zu Deinem Problem mit dem Link hier mal zwei Programmschnipsel, die ich früher mal in einer Routine verwendet habe.Würde ich heute eventuell leicht anders programmieren, aber die Programmierung lebt manchmal auch vom Kopieren von Bewährtem. Natürlich muß das noch an Deine Problematik angepaßt werden:

    For I = 1 To 30
      If strTabelle(2, I) = "" Then Exit For
      Sheets.Add after:=Sheets(I)
      Sheets(I + 1).Name = strTabelle(2, I)
      ActiveSheet.Cells(1, 1).ColumnWidth = 50
      ActiveSheet.Cells(1, 1).Value = "zurück zur Übersicht"
      ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
          "Übersicht!A1", TextToDisplay:="zurück zur Übersicht"
...


Die Routine macht folgendes: Hinter dem höchsten Tabellenblatt wird eingefügt. Dann erhält die Tabelle einen neuen Name. In meinem Fall ist der variabel und kommt daher aus einem Stringarray. Danach wird die Spalte A (1) etwes breiter gemacht und in Zelle A1 (1,1) der Wert "zurück zur Übersicht" geschrieben. Zuletzt wird dieser Text dann noch mit dem Hyperlink auf die erste Tabelle belegt. Die For-Schleife gibt es nur weil ich bis zu 30 Tabellenblätter (sind aber meist weniger) haben kann.

Es folgen dann noch das Füllen und Formatieren diverser Zellen und zum Schluss das Füllen der Übersichtsseite:

...
      Sheets("Übersicht").Select
      strZelle = "A" & Right(Str(1 + I * 2 + 1000), 3)
      ActiveSheet.Range(strZelle).Select
      ActiveSheet.Cells(1 + I * 2, 1).Value = strTabelle(2, I) & " (" & strTabelle(1, I) & ")"
      ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
          "'" & strTabelle(2, I) & "'!A1", TextToDisplay:=strTabelle(2, I) & " (" & strTabelle(1, I) & ")"
...


Die Programmierung ist recht ähnlich we oben.
Es wird auf die Übersichtsseite verzweigt. Mit einer leicht anderen Logig (würde ich heute eher wie oben machen) auf eine neue Zeile gegangen und dort der Name der eben verwendeten Zelle eingefügt. Danach erfolgt der Hyperlink auf die Zelle A1 des oben eingefügten Tabellenblattes.

Hoffe das Beispiel konnte helfen. Für die andern Probleme wäre es gut hier im Forum mal eine Beispieldatei anzuhängen.

LG
hp

Offline gmg-cc

  • Hero Member
  • *****
  • Beiträge: 1.321
    • Profil anzeigen
    • Meine Webseite
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw:Office 2003: VBA - Hilfe
« Antwort #2 am: Dezember 21, 2014, 19:44:30 Nachmittag »
.. wie kann ich mit einem Makro in der zelle z.b. e45 sagen das diese Person 80 Stunden krank war.

Dieses Statement/Frage halte ich juristisch und moralisch für äußerst fragwürdig. Darum kommt darauf von mir keine direkte Antwort.
In meinen Muster-Tabellen für Arbeitszeitabrechnungen trage ich für die Tage der "legitimen" Nichtanwesenheit die Stunden als geleistet ein, womit eine "saubere" Abrechnung erfolgen kann ohne jemand mit "80 Stunden Krankheit" zu diskriminieren.
Gruß
Günther

Offline fajo

  • Newbie
  • *
  • Beiträge: 4
    • Profil anzeigen
  • Office-KnowHow: Anfänger
  • VBA-KnowHow- : Ohne
  • Version [Office] : Office 2003
Antw: Antw:Office 2003: VBA - Hilfe
« Antwort #3 am: Dezember 23, 2014, 15:28:41 Nachmittag »
Hallo

Mir geht es nur darum in der alte c3:c35 steht die Arbeitszeit z.b.: 7:00 - 16:00 und in D3 wird dann die Zeit 8,5 Eingetragen. Nun wenn eben diese Person Krank ist so soll die Zeit einfach aufsumiert werden und in C steht dann eben krank. Krank kann ich Zählen aber wie kann ich automaisch die Zeit aufsumieren. Die endZeit steht dann in einer Anderen spalteile

Wie kann ich denn ein solche Tabelle mal als pdf hinterlegen

LG fajo

Offline gmg-cc

  • Hero Member
  • *****
  • Beiträge: 1.321
    • Profil anzeigen
    • Meine Webseite
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw:Office 2003: VBA - Hilfe
« Antwort #4 am: Dezember 23, 2014, 18:12:28 Nachmittag »
OK fajo,

das hört sich doch schon sehr ähnlich an wie ich es mache. In meinem Blog sind verschiedene Mustertabellen zum Thema Arbeitszeit, schau mal hier nach und dann lade dir die Datei (Link) Monat-Minuszeiten herunter. Der Aufbau ist gewiss anders, aber die Idee kannst du ja adaptieren ...

Anmerkung: Die Automatik-Zensur dieses Forumprogramms verhindert, dass ich  den korrekten Link zu meiner Seite eintragen kann. Entferne bitte den Unterstrich in se_xy, dann kommst du an die Daten.

@ Admin: Ich werde wohl keine Links mehr hier einfügen. Diese Form der US-Zensur ist mir einfach zuwider. Ich fühle mich in meiner Freiheit beschränkt. Schade ...
Gruß
Günther

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline fajo

  • Newbie
  • *
  • Beiträge: 4
    • Profil anzeigen
  • Office-KnowHow: Anfänger
  • VBA-KnowHow- : Ohne
  • Version [Office] : Office 2003
Antw:Office 2003: VBA - Hilfe
« Antwort #5 am: Dezember 24, 2014, 20:36:49 Nachmittag »
Ich wünsche euch allen ein schönes Fest. Der link soll eine genauere beschreibung meines Problem sein.

https://www.dropbox.com/sh/f6tto4t0hdhwjnl/AAAj6qxT4ABYIDJUe1-ZsjMJa?dl=0

Danke für jede Hilfe.

www.verkaufee.de

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.