Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1608to1612
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
Inhaltsverzeichnis

Erste leere Zelle in B finden und beschreiben

Erste leere Zelle in B finden und beschreiben
14.02.2018 14:56:26
Henning
Hallo liebe Experten,
ich habe folgendes Makro:

Sub User_Speichern()
On Error GoTo Fehler
Dim Pfad$, Datei$
Pfad = "Q:\100_Vollzugriff\OSP NEO\Checklistenbearbeitung\"
With Sheets("Checkliste")
If .Range("F7") = "BITTE USERID EINGEBEN" Then
MsgBox "Bitte wählen Sie Ihre UserID in Zelle C7!"
ElseIf .Range("H9") = "Bitte Personennummer auswählen" Then
MsgBox "Bitte geben Sie die Personennummer des Testkunden an"
ElseIf .Range("K7") = "" Then
MsgBox "Bitte geben Sie in K7 ein Datum ein!"
Else
Range("F7:H7").Select
Selection.Copy
Range("F7:H7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H9:K9").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
.Copy
Datei = .Range("C5") & "_" & .Range("C3") & "_" & .Range("I3") & "_" & .Range("C7")  _
_
_
_
_
_
_
_
& "_" & Format(Now, "YYYYMMDD") & ".xlsx"
.PageSetup.LeftFooter = Datei
.PageSetup.RightFooter = Format(Now, "DD.MM.YYYY hh:mm")
.PageSetup.RightHeader = "&ISeite &P von &N"
ActiveWorkbook.SaveAs Filename:=Pfad & Datei, _
FileFormat:=xlOpenXMLWorkbook
--->
.PrintOut
ActiveWorkbook.Close False
Range("O14").Select
Selection.Copy
Range("F7:H7").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("O15").Select
Application.CutCopyMode = False
Selection.Copy
Range("H9:K9").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("N17").Select
Application.CutCopyMode = False
Range("C7").Select
MsgBox "Vielen Dank für das bearbeiten der Checkliste. Die Daten wurden gespeichert und  _
gedruckt. Bitte geben Sie die unterschriebene Checkliste an die OE210."
End If
End With
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub

--------------------------
Vor dem .PrintOut möchte ich gerne in die erste Freie Zelle in "B" (Ab B12 (die Zellen sind jeweils von B bis D verbunden) einen Wert schreiben, danach soll der Druckbereich noch so angepasst werden das der zuvor geschriebene Wert der letzte Wert auf der Seite ist.
Vielen Dank für Eure Hilfe.
Henning

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erste leere Zelle in B finden und beschreiben
14.02.2018 19:47:43
fcs
Hallo Henning,
Ich hab die entsprechenden eingefügt und einige Zeilen optimiert.
Allerdings werdenin deinem Code einige der Einstellungen, die du für das Seiten-Layout machst nicht in dem kopierten Blatt gemacht, das gespeichert wird, sondern nur in dem Original-Blatt, das gedruckt wird.
Hier musst du ggf. die Zeile, die das Blatt kopiert nach unten verschieben.
Gruß
Franz
Sub User_Speichern()
On Error GoTo Fehler
Dim Pfad$, Datei$
Dim Zeile_B As Long
Pfad = "Q:\100_Vollzugriff\OSP NEO\Checklistenbearbeitung\"
With Sheets("Checkliste")
If .Range("F7") = "BITTE USERID EINGEBEN" Then
MsgBox "Bitte wählen Sie Ihre UserID in Zelle C7!"
ElseIf .Range("H9") = "Bitte Personennummer auswählen" Then
MsgBox "Bitte geben Sie die Personennummer des Testkunden an"
ElseIf .Range("K7") = "" Then
MsgBox "Bitte geben Sie in K7 ein Datum ein!"
Else
With Range("F7:H7")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
With Range("H9:K9")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
.Copy 'Blatt "Checkliste" in neue Arbeitsmappe kopieren
Datei = .Range("C5") & "_" & .Range("C3") & "_" & .Range("I3") & "_" & .Range("C7")  _
_
& "_" & Format(Now, "YYYYMMDD") & ".xlsx"
.PageSetup.LeftFooter = Datei
.PageSetup.RightFooter = Format(Now, "DD.MM.YYYY hh:mm")
.PageSetup.RightHeader = "&ISeite &P von &N"
'kopiertes Blatt speichern
ActiveWorkbook.SaveAs Filename:=Pfad & Datei, FileFormat:=xlOpenXMLWorkbook
'nächste leere Zeile in Spalte B
Zeile_B = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
If Zeile_B  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub

Anzeige
AW: Erste leere Zelle in B finden und beschreiben
15.02.2018 11:14:59
Henning
Hallo Franz vielen Dank,
ich habe jetzt nur noch den "PrintArea" übernommen, da ich das befüllen der letzten Zelle in "B" (aufgrund von Zeitdruck) selber hinbekommen habe. (Hat den Vorteil das auch noch variable Inhalte übernommen werden) Leider funktioniert das mit der Seitenaufbereitung nicht. Ich bin leider absoluter VB Laie.
SO sieht mein Code aus:

Sub User_Speichern()
On Error GoTo Fehler
Dim Pfad$, Datei$
Pfad = "Q:\100_Vollzugriff\OSP NEO\Checklistenbearbeitung\"
With Sheets("Checkliste")
If .Range("F7") = "BITTE USERID EINGEBEN" Then
MsgBox "Bitte wählen Sie Ihre UserID in Zelle C7!"
ElseIf .Range("H9") = "Bitte Personennummer auswählen" Then
MsgBox "Bitte geben Sie die Personennummer des Testkunden an"
ElseIf .Range("K7") = "" Then
MsgBox "Bitte geben Sie in K7 ein Datum ein!"
Else
Range("F7:H7").Select
Selection.Copy
Range("F7:H7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H9:K9").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("O16").Select
Selection.Copy
Range("B65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
.Copy
Datei = .Range("C5") & "_" & .Range("C3") & "_" & .Range("I3") & "_" & .Range("C7")  _
& "_" & Format(Now, "YYYYMMDD") & ".xlsx"
.PageSetup.LeftFooter = Datei
.PageSetup.RightFooter = Format(Now, "DD.MM.YYYY hh:mm")
.PageSetup.RightHeader = "&ISeite &P von &N"
ActiveWorkbook.SaveAs Filename:=Pfad & Datei, _
FileFormat:=xlOpenXMLWorkbook
'Druckbereich anpassen Spalte A1 bis Kxxx - xxx =Zeile_B
.PageSetup.PrintArea = .Range(.Cells(1, 1), _
.Cells(Zeile_B, 11)).Address(True, True, xlA1)
.PrintOut
ActiveWorkbook.Close False
Range("O14").Select
Selection.Copy
Range("F7:H7").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("O15").Select
Application.CutCopyMode = False
Selection.Copy
Range("H9:K9").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("N17").Select
Application.CutCopyMode = False
Range("C7").Select
MsgBox "Vielen Dank für das bearbeiten der Checkliste. Die Daten wurden gespeichert und  _
gedruckt. Bitte geben Sie die unterschriebene Checkliste an die OE210."
Range("B65536").End(xlUp).Offset(0, 0).Select
Selection.ClearContents
End If
End With
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Danke für die Hilfe
Anzeige
AW: Erste leere Zelle in B finden und beschreiben
15.02.2018 11:58:06
Henning
Hi nochmal,
also wenn der Wert in die erste freie Zelle in B eingetragen wird habe ich noch das Problem das der Text verschwindet wenn der Platz der Zelle nicht ausreicht, bzw. wird nur ein Fragment ausgedruckt. (Zeilenumbruch ist aktiviert aber die Zeile vergrößert sich nicht)
VG
Henning
AW: verbunden Zellen, Zeilenhöhe bei Zeilenumbruch
15.02.2018 16:40:19
fcs
Hallo Henning,
(Zeilenumbruch ist aktiviert aber die Zeile vergrößert sich nicht)
Das ist ein Problem von verbundenen Zellen.
Ist auch nur mit Umweg hinzubekommen
1. außerhalb des eigenlichen Datenbereichs eine Hilfspalte einrichten mit Zeilenumbruh und genauso breit wie die Spalten der verbunden Zellen zusammen.
2. In dieser Spalte trägt man den Inhalt, der in den verbunden Zellen eingetragen wird, ebenfalls ein.
4. Die Zeilenhöhe solte sich dann ebefalls automatisch anpassen, ggf. muss man mit Autofit für die Zeilehöhe einstellen.
5. Die so enstandene Zeilenhöhe muss man auslesen und der Zeile als fixe Höhe zuweisen.
6. Der Inhalt in der Hilfsspalte kann wieder gelöscht werden.
Das Ganze kann man per Makro umsetzen, ist aber schon etwas mühselig.
Ich hab im Moment aber keine Zeit das zu programmieren.
Muss mich erst einmal stärken und dann auf die Nachtschicht vorbereiten.
Leider funktioniert das mit der Seitenaufbereitung nicht. Ich bin leider absoluter VB Laie.
Was funktioniertden nicht?
Was soll denn wo (in der Kopie, die gespeichert wird, oder im zu druckenden Protokoll) wann passieren (vor dem Speichern, vor dem Drucken)?
Einfach mal einen genauen Schrittplan erstellen und dann kann man an eine Makroumsetzung gehen.
Gruß
Franz
Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige