Supportnet / Forum / Tabellenkalkulation
VBA-Codes verbessern
Frage
Moin...
Ich hab einige kleine Makros mit dem Recorder aufgezeichnet. Dabei muß ich ja die einzelnen Zellen wählen und im Code erscheint dann je Range("a18").select. Wenn ich das Makro per Button starte springt der Bildschirm ja immer den Selectbefehlen hinterher. Geht es auch anders indem ich den Code manuell verändere ohne das der Bildschirm den Slectbefehlen hinterherspringt.
(Beispiel)
Range("A18:F18").Select
With Selection.Font
.Name = "Swis721 Cn BT"
.Size = 9
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
Kann ich hier auch die Selectbefehle irgendwie weglassen. Ich will das Layout der Zellen verändern so wie es in dem Code beschrieben ist. Geht das???
[*][quote][sup][i]Admininfo: bitte vermeide Mehrfachanfragen in verschiedenen, bzw. gleichen Gruppen. Siehe [url=https://supportnet.de/groupfaqs/3][u]FAQ2.[/u][/url][/i][/sup][/quote]
Antwort 1 von JoeKe
Moin,
ja das geht. ;-)
So:
With Range("A18:F18").Font
.Name = "Swis721 Cn BT"
.Size = 9
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Gruß
JöKe
ja das geht. ;-)
So:
With Range("A18:F18").Font
.Name = "Swis721 Cn BT"
.Size = 9
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Gruß
JöKe
Antwort 2 von kuestenjung06
Kann ich so alle Select.Befehle aus so einem VBA-Code entfernen?
Antwort 3 von JoeKe
Hallo,
auf "select" kann in den meisten Fällen versichtet werden.
Wie dabei zu verfahren ist, hängt von dem ab was man erreichen möchte.
Normalerweise kann aber davon ausgehen, dass wenn im Code xxxx.select; selection.xyz steht, dass man genau sogut xxxx.xyz schreiben kann.
MfG
JöKe
auf "select" kann in den meisten Fällen versichtet werden.
Wie dabei zu verfahren ist, hängt von dem ab was man erreichen möchte.
Normalerweise kann aber davon ausgehen, dass wenn im Code xxxx.select; selection.xyz steht, dass man genau sogut xxxx.xyz schreiben kann.
MfG
JöKe
Antwort 4 von kuestenjung06
Danke für die Hilfe.. :)
Antwort 5 von kuestenjung06
Ich hab da noch ein Problem. Ich komm hier einfach nicht weiter.. Ich habe per aufgezeichnetem Makro leere Zeilen in eine Liste eingefügt. Zusätzlich dazu ein Kombifeld welches über Sverweis Kundendaten in solch eine leere Zeile einfügt wenn ich einen CommandButton clicke. Ich hab aber nur ein "zentrales Kombifeld" mit dem ich auf die Kundenliste (datensätze)zugreife. In der neuen Zeile will ich einen anderen Datensatz einfügen. Da ich aber nur eine Zentrale Kombiliste habe bleiben alle Zellen mit Ihr verbunden. Ändere ich sie ändern sich auch alle Zeilen davor. Wie kann ich das verhindern???
Antwort 6 von JoeKe
Moin,
das kann man ohne deinen Code zu kennen nicht sagen.
Gruß
JöKe
das kann man ohne deinen Code zu kennen nicht sagen.
Gruß
JöKe
Antwort 7 von kuestenjung06
Hallöchen
Sub Formel()
ActiveCell.FormulaR1C1 = "=VLOOKUP(R8C7,Kundendatei!R4C1:R28C11,2,FALSE)"
End Sub
Das ist eine der Sverweis formeln, mit der ich aus einem Tablot (in dem ich per Kombifeld Kunden raussuche) dieDaten des Kunden in eine Zeile eintragen will. Vorher hab ich die Zeile per Makro generiert. Das funktioniert auch. (ewig langes Makro mit Formatierungen(Schrift,Zellgröße;Ausrichtung)).
Private Sub CommandButton3_Click()
Call Neu
Call Laufjahr
Call hinzufügen
Range("18:18").Select
Selection.Font.Bold = False
End Sub
Clicke ich diesen Button wird 1. Zeile generiert
2.Eine Rechnungsnummer aktualisiert
3. der Datenstz in die zeile eingefügt.
Frage: Kann ich hier etwas einfügen damit bei neuem Click auf den Button nicht mehr die selben Daten hinzugefügt werden.
Range("F18").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-4]"
Range("J18").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-7]"
Range("K18").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-7]"
Range("L18").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-7]"
Range("M18").Select
ActiveCell.FormulaR1C1 = "=R[-3]C[-10]"
Range("N18").Select
ActiveCell.FormulaR1C1 = "=R[-3]C[-10]"
Range("O18").Select
ActiveCell.FormulaR1C1 = "=R[-3]C[-10]"
Range("P18").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-10]"
Range("Q18").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-9]"
Range("R18").Select
ActiveCell.FormulaR1C1 = "=R[-3]C[-12]"
Das ist der Sub hinzufügen??? Eine Idee???
Sub Formel()
ActiveCell.FormulaR1C1 = "=VLOOKUP(R8C7,Kundendatei!R4C1:R28C11,2,FALSE)"
End Sub
Das ist eine der Sverweis formeln, mit der ich aus einem Tablot (in dem ich per Kombifeld Kunden raussuche) dieDaten des Kunden in eine Zeile eintragen will. Vorher hab ich die Zeile per Makro generiert. Das funktioniert auch. (ewig langes Makro mit Formatierungen(Schrift,Zellgröße;Ausrichtung)).
Private Sub CommandButton3_Click()
Call Neu
Call Laufjahr
Call hinzufügen
Range("18:18").Select
Selection.Font.Bold = False
End Sub
Clicke ich diesen Button wird 1. Zeile generiert
2.Eine Rechnungsnummer aktualisiert
3. der Datenstz in die zeile eingefügt.
Frage: Kann ich hier etwas einfügen damit bei neuem Click auf den Button nicht mehr die selben Daten hinzugefügt werden.
Range("F18").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-4]"
Range("J18").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-7]"
Range("K18").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-7]"
Range("L18").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-7]"
Range("M18").Select
ActiveCell.FormulaR1C1 = "=R[-3]C[-10]"
Range("N18").Select
ActiveCell.FormulaR1C1 = "=R[-3]C[-10]"
Range("O18").Select
ActiveCell.FormulaR1C1 = "=R[-3]C[-10]"
Range("P18").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-10]"
Range("Q18").Select
ActiveCell.FormulaR1C1 = "=R[-5]C[-9]"
Range("R18").Select
ActiveCell.FormulaR1C1 = "=R[-3]C[-12]"
Das ist der Sub hinzufügen??? Eine Idee???
Antwort 8 von kuestenjung06
Hallo CaroS...
Bin deiner Bitte gefolgt und hab mir das durchgelesen. Da du mich darauf hingewiesen hast das ohne Code nichts geht hab ich ihn nochmal eingestellt.
Von Plauderecke kann keine Rede sein. Ich habe versucht das Problem genauer zu beschreiben. Wo ist der Fehler darin.
Brauche dringend Hilfe da ich nicht weiter komme. Ich hab auch schon die Datenbank durchfortet aber keine ähnlichen Anfragen gefunden.
Bin deiner Bitte gefolgt und hab mir das durchgelesen. Da du mich darauf hingewiesen hast das ohne Code nichts geht hab ich ihn nochmal eingestellt.
Von Plauderecke kann keine Rede sein. Ich habe versucht das Problem genauer zu beschreiben. Wo ist der Fehler darin.
Brauche dringend Hilfe da ich nicht weiter komme. Ich hab auch schon die Datenbank durchfortet aber keine ähnlichen Anfragen gefunden.
Antwort 9 von Mickey
Zitat:
Ich habe versucht das Problem genauer zu beschreiben. Wo ist der Fehler darin.
Aha. Die Problematik ist, dass du bereits einen Thread mit obigem Code (A7) laufen hast, und hier jetzt weitermachst. Welchen der beiden Threads willst du weiterführen und welcher könnte geschlossen werden? Die User posten hier sonst kreuz und quer.Ich habe versucht das Problem genauer zu beschreiben. Wo ist der Fehler darin.
Gruss,
Mic
Bei Eingriffen ins System, die Registry oder an Systemdateien erst eine Sicherung vornehmen©
Antwort 10 von kuestenjung06
Hallo Mickey
Ich würde den VBA verbessern II löschen (oder schließen). Ihr könnt auch beide löchen und ich stelle eine neue Anfrage.
Danke für die Info
Ich würde den VBA verbessern II löschen (oder schließen). Ihr könnt auch beide löchen und ich stelle eine neue Anfrage.
Danke für die Info
Antwort 11 von Mickey
Sei so gut und eröffne nicht noch eine dritte Anfrage, sondern führe einen Thread so fort, wie es hier üblich ist. Dein 2ter Thread wurde wunschgemäß wieder geschlossen.
Gruss,
Mic
Bei Eingriffen ins System, die Registry oder an Systemdateien erst eine Sicherung vornehmen©
Gruss,
Mic
Bei Eingriffen ins System, die Registry oder an Systemdateien erst eine Sicherung vornehmen©

