Inhalt der Zelle einer Variablen zuweisen


#22
Gut, jetzt haben wir einen lesbaren Code. Dan befasse ich mich mal damit:
Ja, ich versuche es! Ich probiere es zu vereinfachen, weil es hat viel zu viele MsgBoxen. Ich muss mich nicht auf die Copy-Bereiche beschränken, die sin sowieso ausgefüllt und wenn man außerhalb des Copy-Bereichs klickt, wird eine leere Zelle kopiert. Langsam verstehe ich die Befehle, und Ich hoffe das ich ein Erfolg haben werde.
DU willst dich nicht auf die Copy-Bereiche beschränken. Das hast du ja

Ein Problem hast du sicher mal damit, dass du den flagInProcess einfach auf true setzt, egal wo im Sheet dass du bist. Erst nachher prüfst du die Bereiche.
Du fragst nach einmal kopieren auch nicht mehr nach, ob weiter kopiert werden soll. Somit wird der flagInProcess nach dem Kopieren NIE zurückgesetzt.
Erst wenn du ausserhalb des Zielbereichs klickst, wird gefragt.
Die folgende Zeile funktioniert nicht mehr, muss ich hier den Befehl flaginProcess = Else setzen?
Was ist Else? Meinst du Not? Jepp. Du hast die Frage umgedreht. Vorher war die Frage "Weiter kopieren" und jetzt "Eingabe beenden". Das ist das Gegenteil. Ergo muss auch gegenteilig ausgewertet werden.
Entweder mit Not oder mit <> anstelle =
 
#23
  1. Else: srcRng.Copy Range("G" & Target.Row & ":H" & Target.Row) dies ist o.k.
  2. srcRng.Copy Range("I" & Target.Row & ":J" & Target.Row) hier weis ich nicht wie die Bedingung schreiben
  3. Ich möchte das Resultat entweder In den G&H oder I&J kopieren
 
#24
Hier ist meine Tabelle als Beispiel:
In die 4 Blöcke aus dem Repertoire Lieder mit Nummern platzieren. Jeder Block ist 8-10 Lieder gross (Spieldauer ca.1Std./ Block). Ursprünglich wollte ich solange die Blöcke füllen bis die Taste "Esc" oder sonstwas betätigt wird.
 

Anhänge

#25
In deinem PDF sind die Daten über mehrere Spalten verteilt und dann kommen erst die Zeilblöcke. Ist dem so? Dass A+B, C+D und E+F als Quelle gelten?

Ich rate davon ab und würde die Daten alle untereinander haben.
 
#28
Schau dir den Code an. Das ist jetzt wirklich einfach zum erweitern.
Visual Basic:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim rowDelta As Integer
    'Nur ausführen, wenn wir gerade nicht im Copy-Process sind

    'Die verschieden Quellbereiche nacheinander prüfen. Sobald ein Treffer ist, die Funktion verlassen
    If handleSource("SRC_1", Target) Then Exit Sub      'AreaAddress ist ein Benannter Range
    If handleSource("C2:D4", Target) Then Exit Sub      'AreaAddress ist eine einfache Adresse
   
   
    If flagInProcess Then
        'Die verschieden Zielbereiche nacheinander prüfen. Sobald ein Treffer ist, die Funktion verlassen
        If handleTarget("TRG_1", Target) Then Exit Sub
        If handleTarget("TRG_2", Target) Then Exit Sub
       
    'Wir sind am Kopieren aber ausserhalb des Zielbereiches
    Else
        'Nachfragen um abzubrechen
'        flagInProcess = MsgBox("Feld ist nicht im Zielbereich. Weiter kopieren?", vbCritical + vbOKCancel) = vbOK
'        showSelectedValue
    End If
   
End Sub
Einfach mehr handleSource() Zeilen einfügen mit den weiteren Quellbereichen.
Und weitere handleTarget() Zeilen mit Zielbereichen einfügen. Um alles andere musst du dich nicht mehr kümmern.

Ab sosfort gibts von mir nur noch Erklärungen. Ich habe dir eine fertige Lösung gegeben, die du beliebige erweitern kannst.
 
#30
Hallo Yaslaw, ich habe es fasst geschafft. Es funktioniert so wie es sollte. Ich habe einen .pdf-File-Namen aus
zwei Variablen gebastelt, nun reklamiert der Skript-Editor:Das Funktionsverzeichnis des Programms oder der Erweiterung konnten nicht gelesen werden, da sie nicht skriptfähig sind.Wie kann ich diesen Pdf-File Skriptfähig machen?
sName = sTxt & dTxt ergibt einen Namen z.B. "Test01_04.05.2017.pdf"
 
Zuletzt bearbeitet:

Yaslaw

n/a
Moderator
#31
Visual Basic:
sName = sTxt & dTxt ergibt einen Namen z.B. "Test01_04.05.2017.pdf"
Da ist kein Verzeichnis vorhanden. Wie definierst du das Verzeichnis?
 
#34
Pfad = "HD:Users:frantisekhlavac:Documents:GSD:projekt:pDF:Anlässe:"
Set Rng = Range("H1:L34")

'Dies ist der Name der PDF-Datei als String
sName = sTxt & dTxt & ".pdf"
'MsgBox sName

'ActiveSheet.PageSetup.PrintArea = Rng

Range("H1:L33").Select
ActiveSheet.PageSetup.PrintArea = "$H$1:$L$33"
Range("H1:L33").Select

'** PDF erzeugen
ActiveWorkbook.SaveAs Filename:=Pfad & sName, _
FileFormat:=xlPDF, PublishOption:=xlSelection
 

Yaslaw

n/a
Moderator
#35
Bitte dein Code in Code-Tags setzen. Ansonsten hat man sowas und das kann wirklich kein Schwein mehr lesen
Pfad = "HD:Users:frantisekhlavac:Documents:GSD:projekt:pDF:Anlässe:"
Set Rng = Range("H1:L34")
Ich werde in Zukunft alle deine Beiträge ignorieren, bei denen der Code nicht in Code-Tags gesetzt ist. Es ist eine Zumutung für jeden der helfen will, da zu erkennen was abgeht.
 
#36
Dies habe ich bereits einmal geschrieben:
"ich habe keine Ahnung wie man dies macht, im 2-Thred meine ich, habe ich das Ganze kopiert."
Ich habe es nicht geschafft den Code aus den VB-Script-Editor so darzustellen wie Du dies gerne hättest...
 

Yaslaw

n/a
Moderator
#37
Dies habe ich bereits einmal geschrieben:
"ich habe keine Ahnung wie man dies macht, im 2-Thred meine ich, habe ich das Ganze kopiert."
Ich habe es nicht geschafft den Code aus den VB-Script-Editor so darzustellen wie Du dies gerne hättest...
1) Dann schau beim Kopierten Thread, wie die Tags aussehen.

2) Wie währe es mit der Hilfeseite des Forum. Dort unter BBCodes
2017-03-09_100650.png

3) Und falls das alles zu kompliziert ist, geht es auch ganz einfach über das Textbearbeitungsmenü des Forums.
2017-03-09_100436.png

Und wenn man deinen Code. In Code-Tags setzt (Sprache VB), dann sieht es so schön aus
Visual Basic:
Pfad = "HD:Users:frantisekhlavac:Documents:GSD:projekt:pDF:Anlässe:"
    Set Rng = Range("H1:L34")
 
    'Dies ist der Name der PDF-Datei als String
    sName = sTxt & dTxt & ".pdf"
    'MsgBox sName
 
    'ActiveSheet.PageSetup.PrintArea = Rng
 
    Range("H1:L33").Select
    ActiveSheet.PageSetup.PrintArea = "$H$1:$L$33"
    Range("H1:L33").Select

    '** PDF erzeugen
    ActiveWorkbook.SaveAs Filename:=Pfad & sName, _
        FileFormat:=xlPDF, PublishOption:=xlSelection
 
#38
in Textbearbeitungsmenü des Forums kann ich kein Code VB auswählen. Die habe ich mit dem Code "Allgemein gemacht, da fehlen die Code Zeilennummer...

Code:
Sub anlspei()

    Application.ScreenUpdating = False
   
  Pfad = "HD:Users:frantisekhlavac:Documents:GSD:Projekt:PDF:Anlässe:"
    Set Rng = Range("H1:L34")
   
    'Dies ist der Name der PDF-Datei als String
    sName = sTxt & dTxt & ".pdf"
    'MsgBox sName
  
    'ActiveSheet.PageSetup.PrintArea = Rng
   
    Range("H1:L33").Select
    ActiveSheet.PageSetup.PrintArea = "$H$1:$L$33"
    Range("H1:L33").Select

    '** PDF erzeugen
    ActiveWorkbook.SaveAs Filename:=Pfad & sName, _
        FileFormat:=xlPDF, PublishOption:=xlSelection
   
  
    If sLeer <> "" Then
       Clear
    End If
    Range("A46").Select
End Sub
 
#39
Nun sind sie da ! Erst nach dem Versenden der Antwort. Damit ist auch dies Problem gelöst.
Ich danke Dir vielmals. Ich bin doch ein "Grünschnabel" Die Zahl bei meinem Benutzernamen ist mein Geburtsjahr.
 
#40
Noch was: in der Zeile 18 wird der Pdf-Name folgendermassen gespeichert: "Name+2-erste Stellen von dTxt+Numerisch.pdf". Wenn ich dies direkt in Excel ausführe, mit der Option "Suffix ausblenden" verschwinde der Eintrag "numerisch". Wie kann ich die per Skript ausblenden? Weiter weiss ich nicht warum von dTxt-String nur die ersten 2-Zeichen im Datei-Namen erscheinen. Du weisst sicher eine Lösung ...