Hallo, Gast |
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.
|
Foren-Statistiken |
» Mitglieder: 1
» Neuestes Mitglied: Joopi
» Foren-Themen: 480
» Foren-Beiträge: 659
Komplettstatistiken
|
Benutzer Online |
Momentan sind 8 Benutzer online » 0 Mitglieder » 5 Gäste AhrefsBot, Bytespider, bot
|
|
|
Der Umgang mit dem Datum |
Geschrieben von: Joopi - 08-01-2023, 11:15 - Forum: Excel und LibreOffice Calc
- Keine Antworten
|
|
Code: Sub datum_erkennen_1()
'
Dim LstrDate As String
Dim LDate As Date
'
'LstrDate = "12.08.2019"
'
LstrDate = Range("C6").Value
LDate = CDate(LstrDate)
'
'MsgBox LDate
Debug.Print LDate
'
End Sub
Code: Sub datum_erkennen_2()
'
Dim tag As Date
'
tag = CDate(Range("C6").Value)
'
'MsgBox tag
Debug.Print tag
'
End Sub
Code: Sub datum_erkennen_3()
'
Dim tag1 As String
Dim tag2 As String
Dim tag3 As String
'
tag1 = Year(CDate(Range("C6").Value))
tag2 = Month(CDate(Range("C6").Value))
tag3 = Day(CDate(Range("C6").Value))
'
Debug.Print tag1
Debug.Print tag2
Debug.Print tag3
'
End Sub
Code: Sub tagesdatum()
'
Debug.Print Date
Debug.Print Time
Debug.Print WeekdayName(Weekday("14.08.2019"), False, vbSunday)
Debug.Print Format("14.08.2019", "DDDD")
Debug.Print Choose(Weekday("14.08.2019"), "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag")
'
End Sub
Code: Sub kw_ermitteln()
'
Dim kw As Integer
'
'Aufruf der Funktion (siehe unten) mit Parameter
kw = DINKw("14.08.2019")
'
'kw = DINKw(Range("A1").value)
'
'MsgBox kw
'
Debug.Print "Kalenderwoche: " & kw
'
End Sub
Code: Function DINKw(dat As Date) As Integer
'
Dim kw As Integer
'
kw = Int((dat - DateSerial(Year(dat), 1, 1) + ((Weekday(DateSerial(Year(dat), 1, 1)) + 1) Mod 7) - 3) / 7) + 1
'
If kw = 0 Then
'
kw = DINKw(DateSerial(Year(dat) - 1, 12, 31))
'
ElseIf kw = 53 And (Weekday(DateSerial(Year(dat), 12, 31)) - 1) Mod 7 <= 3 Then
'
kw = 1
'
End If
'
DINKw = kw
'
End Function
|
|
|
Outlook-Mail über VBA-Code versenden |
Geschrieben von: Joopi - 08-01-2023, 11:12 - Forum: Excel und LibreOffice Calc
- Keine Antworten
|
|
Mit einem VBA-Code ist es möglich eine Mail über Outlook abzusenden. Dabei unterscheidet man den Direktversand oder eben die Anzeige in Outlook, um noch Änderungen vorzunehmen. Im nachfolgenden Code sind alle üblichen Funktionen dargestellt, teils auskommentiert.
Code: Sub EmailAbsenden_bunker()
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = "deinname@deinedomain.de"
'.CC = "deinname@deinedomain.de"
'.BCC = "deinname@deinedomain.de"
'Versand an mehrere Empfänger
'.To = "deinname@deinedomain.de; zweiteEmailadresse@domain.de"
.Subject = "Betreff"
.Body = "Ihre Nachricht."
'Versand über Outlookanzeige
.Display 'Erstellt die Email und öffnet diese. Der Versand erfolgt anschließend manuell vom User!
'Versand direkt aus dem VBA-Code heraus
.Send 'Sendet die Email automatisch
'.Attachments.Add "C:/Beispiel.xlsx"
'Versand mehrerer Anhänge in einer Mail
'.Attachments.Add "C:/Beispiel_1.xlsx"
'.Attachments.Add "C:/Beispiel_2.xlsx"
End With
End Sub
Im VB-Editor muss die Objektbibliothek Microsoft Outlook 16.0 Object Library gesetzt sein.
Das Beispiel habe ich hier gefunden:
https://www.makro-excel.de/2017/03/06/pe...versenden/
|
|
|
Zellbezug dynamisieren |
Geschrieben von: Joopi - 08-01-2023, 11:09 - Forum: Excel und LibreOffice Calc
- Keine Antworten
|
|
Es gibt dann und wann Gründe, einen Zellbezug zu dynamisieren. Das bedeutet, die Zelladresse ist nicht eindeutig, sondern abhängig von einem Ergebnis.
Über INDIREKT kann so ein dynamischer Zellbezug erstellt werden. Hier ein Beispiel:
Code: =ZÄHLENWENN(INDIREKT("K12:K"&ZEILE()+SUMME(A8+3));"")
Zusammensetzung der Formel mit einem dynamischen Zellbezug.
Der dynamische Teil der Zählenwennformel setzt sich zusammen aus der Anzahl der Datensätze (also aus A8) und der Position der Formel (K8 in dem Falle).
Wenn also bis zum Ende der Tabelle Leerfelder gezählt werden sollen, dann darf das Zählen nicht über das Tabellenende hinausgehen, weil sonst die überschüssigen Zellen, die leer sind, auch gezählt werden. Der Wert von 3 wird hier hinzugerechnet, da meine Tabellen generell ab Zeile 12 beginnen, die Formel in Zeile 8 steht und somit zur Anzahl nur noch 3 hinzuzurechnen sind, um bis ans Tabellenende zu kommen.
Gefunden habe ich die Lösung hier:
https://supportnet.de/fresh/2006/8/id1393952.asp
|
|
|
Responsive Grid |
Geschrieben von: Joopi - 08-01-2023, 11:01 - Forum: Programmieren
- Keine Antworten
|
|
Aus dem Internet sind jede Menge HTML5-Templates für den Download zur Verfügung. Im Grunde genommen ist es eine HTML5-Struktur mit Beispiel-Inhalt und einem responsiven Layout für die Darstellung auf verschiedenen Bildschirmen. Das ist im Grunde genommen die Krux.
Zwei Templates habe ich nun soweit analysiert, dass ich endlich verstanden habe, wie diese Templates an sich funktionieren. In Teilen konnte ich auch den CSS-Code nachvollziehen. Leider aber ist mir das nicht zu 100 % gelungen. Der HTML-Code dagegen ist recht einfach und simple nachzuvollziehen.
Alles basiert im Grunde genommen auf feste Bereiche, die meist mit DIV-Tags ausgezeichnet werden. Innerhalb dieser Bereich kann dann über das grundlegende GRID-Konstrukt, oftmals sind es 12 Spalten, ein responsives Layout erstellt werden. Wie im CSS diese Spalten (columns) tatsächlich deklariert und programmiert werden müssen, ist mir noch ein Rätsel, da es vielfach auch Abwandlungen gibt. Letztlich aber wäre mir ein einfach Layout lieb. Das ist bei vorgefertigten Layouts aber nicht immer der Fall.
Das HTML5-Template für ein Magazin ist recht kompliziert. Dennoch habe ich gerade an diesem Template verstanden, wie das mit den grids und rows und cols ineinander greift.
Ohne mich in die Tiefen der HTML-Strukturierung und Auszeichnung mit allen möglichen Tags verlieren zu wollen, ist die nachfolgende Darstellung wohl so eine Art von optimalem Vorgehen:
section
Um in einem HTML-Dokument Struktur zu haben nutzt man das Tag section. Es kann mehrere solcher Sektionen geben.
container
Der Container kann in einer Sektion mehrfach vorkommen und ist auch wieder ein in sich abgeschlossener Bereich für die Strukturierung des Dokuments.
row
Die Zeile (row) kann innerhalb eines Containers mehrfach vorkommen und ist auch hier ein in sich abgeschlossener Bereich.
In dem Mag-Template (post.html) sind mehrere Sektionen enthalten, aber innerhalb der Sektion sind jeweils nur ein Container und ein Row ausgezeichnet.
Innerhalb von Row wurden nun mit dem 12-Spalten-Layout zwei weitere Bereiche ausgezeichnet, die zum einen mit **col-md-8** und zum anderen mit col-md-4 benannt wurden. In der Summe sind das wieder 12 Spalten, denn col ist nichts anderes als eine Spalte (column). Beide Bereich umfließen sich und werden in der maximalenn Breite des Bildschirm nebeneinander dargestellt. Wäre beide Bereiche mit col12 benannt, würde sie natürlich immer untereinander stehen.
Verkleinert sich die Ausgabe auf einem Bildschirm, weil entweder das Browserfenster verkleinert wird oder das Dokument wird auf einem kleineren Ausgabegerät aufgerufen, wandert der Bereich mit den 4 Spalten nach unten, weil eben nicht mehr genügend Platz vorhanden ist. Damit ist das System des responsiven Layout erfüllt. Ist das Ausgabegerät ein Smarphone, steht grundsätzlich alles an Artikeln untereinander, die Menüs werden in Seitentaschen gepackt und können dann in den Vordergrund geholt werden.
Es versteht sich in HTML von selber, dass alle Tags zu schließen sind. Das Einrücken hat hier eine besondere Bedeutung, da bei umfangreichen Dokumenten ansonsten bei der Fehlersuche oder anderen Analyse das Chaos ausbrechen könnte.
Auch das Template Halcyonic wird nach diesem Prinzip funktionieren. Dieses Template ist allerdings nicht ganz so aufwendig wie das Magazin-Template. Hier war es relativ einfach, um die Gesamtbreite meines Bildschirms auszunutzen, wenn ein Dreispalte anzeigt wurde. Die weitere Analyse werde ich bald angehen und dann in PHP-Include-Dateien umsetzen.
|
|
|
Mediascreen ermitteln und nutzen |
Geschrieben von: Joopi - 08-01-2023, 10:57 - Forum: Programmieren
- Keine Antworten
|
|
Ich möchte gerne mein eigenes responsives Design aufbauen, um mein Intranet Version 3 besser nutzbar zu machen und auch mal über das Tablet oder Smartphone nutzen zu können. Es ist nicht gerade einfach, ein resposives Layout mit allen grundlegenden Notwendigkeit zu erstellen.
Bei der Konzeption des CSS3-Codes müssen die Bildschirmgrößen beachtet, angegeben und mit CSS-Code belegt werden. Diese Medienangaben beziehen sich auf maximale Größen der Bildschirme, also der Ausgabegeräte. Ist nichts angegeben, so nimmt das Programm die volle Breite des Ausgabegerätes. Alles andere, was eingeschränkt ist, wird entsprechend anders dargestellt und die Blocks rutschen ineinander oder werden komplett anders dargestellt. Bei Navigationsleisten passiert das oftmals.
Gängige Größe der Bildschirm nach der normalen Auflösung sind:
- @media screen and (max-width: 1280px)
- @media screen and (max-width: 980px)
- @media screen and (max-width: 736px)
- @media screen and (max-width: 480px)
Damit sollte alle zur Zeit gängigen Bildschirmeformate abgedeckt sind.
Um ein responsives Layout zu erhalten, in dem auch die Navigation noch gewährleistet ist, werde ich wahrscheinlich auf Bootstrap zurückgreifen müssen. Dieses wird auch von w3schools propagiert. Derzeit versuche ich über mein Buch, welches leider schon älter ist, die grundlegenden Informationen und Kenntnisse zu erhalten.
Im Kopfbereich einer HTML-Seite muss folgendes notiert werden:
Code: <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0">
Diese Information habe ich aus meinen etwas älteren Buch über responsives Design.
Aus einem neueren Template habe ich folgenden Eintrag gefunden, aus dem auch die obigen Bildschirmgrößen kommen:
Code: <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
|
|
|
MidnightCommander |
Geschrieben von: Joopi - 08-01-2023, 10:44 - Forum: Linux
- Keine Antworten
|
|
In einem YouTube-Video habe ich einen Vortrag zum MidnightCommander (MC) gesehen und mir einige Notizen gemacht.
- STRG + O zeigt die Ausgabe eines Befehls in der Kommando-Zeile in der Subshell (so kommt man auch wieder zurück)
- ESC + T zeigt den aktuellen Ordner unterschiedlich an, und zwar in 5 Varianten
- CD auf der Subshell bewirkt, dass man in den Ordner */home* kommt
- Mit EINF werden einzelne Dateien markiert, mit * werden alle Dateien, aber keine Ordner, markiert
- STRG + x + p bringt den gesamten Ordner des anderen Fensters in die Kommandozeile (das aktuelle Verzeichnis)
|
|
|
Notwendige Pakete sofort nachinstallieren |
Geschrieben von: Joopi - 08-01-2023, 10:25 - Forum: Linux
- Keine Antworten
|
|
Ein debianbasiertes System benötigt wohl Pakete, die im Standard nicht direkt mitinstalliert werden. Warum das os ist kann ich nicht sagen. Ich habe das in einen Video auf YouTub gesehen, aber auch selber miterlebt, als ich eine Installation vorgenommen habe (wahrscheinlich VirtualBox) und beim ersten Update-Befehl über apt-get diesen Hinweis sah.
Folgender Befehl installiert die Pakete gcc, make, perl:
Code: sudo apt-get install gcc make perl
Ich werde versuchen herauszufinden, was es mit diesen Pakten auf sich hat und warum sie im Standard nicht sofort mitinstalliert werden, da sie anscheinend benötigt werden.
|
|
|
Systemupdates automatisieren auf dem Server |
Geschrieben von: Joopi - 08-01-2023, 10:23 - Forum: Linux
- Keine Antworten
|
|
Auf dem Kanal von NetworkChuck habe ich gesehen, dass es für Server sehr wichtig sein kann, dass Systemupdates automatisiert gemacht werden. Server sind für gewöhnlich immer online, daher wäre es gut, wenn man das entsprechend einrichtet.
Das dazu benötigte Paket wird wie folgt installiert:
Code: sudo apt-get install unattended-upgrades
Um die automatischen Updates zu aktivieren, ist dann folgender Befehl erforderlich:
Code: sudo dpkg-reconfigure --priority= low unattended-upgrades
Sobald der Befehl ausgeführt wurde, erscheint ein Fenster, in dem die Konfiguration durchgeführt wird
Die Frage nach den automatischen Updates beantwortet man mit ja bzw. yes.
|
|
|
Befehl zum Ansehen der Update-History |
Geschrieben von: Joopi - 08-01-2023, 10:22 - Forum: Linux
- Keine Antworten
|
|
Will man wissen, welche Updates eingespielt wurden, kann folgender Befehl genutzt werden:
Code: cat /var/log/apt/history.log > ~/historylog.txt && xdg-open ~/historylog.txt
Das ist sinnvoll, sollte es nach einem Update zu Problemen gekommen sein.
|
|
|
Mit SSH am Server anmelden |
Geschrieben von: Joopi - 08-01-2023, 10:21 - Forum: Linux
- Keine Antworten
|
|
Am Server nie mit dem User root anmelden, sondern immer mit einem normalen User, der in der Gruppe sudo ist.
Die Anmeldung erfolgt (was ich schon weiß) so:
Code: ssh username@server.name.oder.ip
Sobald die Verbindung steht, wird noch nach dem Password gefragt (besser ist die Private-Public-Key-Variante!).
Dann ist man auf dem Server angemeldet und kann die root-Rechte via sudo ausüben.
|
|
|
|