VBA Worksheetwechsel klappt nicht

...komplette Frage anzeigen

4 Antworten

Aus welcher Datei startest du das Makro denn. Dem Text nach doch aus der jeweils aktuellen Arbeitsdatei. Hier kannst du doch bevor du was anderes machst den Namen der aktuellen Arbeitsdatei auslesen.

Dat = ThisWorkbook.Name

dann hast du den Dateinamen der aktuellen Arbeitsdatei und kannst beliebig zwischen Quell- und Arbeitsdatei hin und her springen.

Antwort bewerten Vielen Dank für Deine Bewertung
augsburgchris 02.04.2013, 14:16

gerade gelesen das du sie aus der Personl.xls startest:

Versuch es mal hiermit:

For Each Dat In Application.Workbooks
If Dat.Name <> "Helpmuster.xls" Then
wert = Dat.Name
Exit For
End If
Next Dat

Dürfen halt immer nur die 2 Tabellen auf sein. Sonst kann Excel sich schlecht entscheiden was es nun als Quelle nehmen soll.

PS: Variablen notfalls noch mit Dat als Object und wert als String deklarieren. Bin ich immer zu faul zu.

0
Distel35 05.04.2013, 12:05
@augsburgchris

Hallo Chris,

ja, mit den Workbooks hab ich mich schon verzweifelt rumgeschlagen. Denn, die private Arbeitsmappe Personl.xls ist normalerweise (wenn man nicht programmiert) ausgeblendet.

Aber wenn ich in meinen Makros was verändern möchte habe ich die Personl.xls tageweise eingeblendet, um überhaupt an die Makros ranzukommen.

Darüberhinaus weiß ich nicht, ob ausgeblendet gleich geschlossen ist. Also gebe ich momentan zu Sicherheit den Monatsnamen mit 03 ein, so wie es Uwe empfohlen hatte.
Die Kontrollprints welche Arbeitsmappe gerade aktiv ist, ergeben aber immer diese "EVN_2013-03.csv", da ich ja diese Arbeitsmappe öffne und dann die Makros (aus Personl.xls) starte.

Danke für deine Tipp, ich werde ihn heute noch testen.

LG Distel

0
augsburgchris 05.04.2013, 15:13
@Distel35

Naja, du kannst ja in der if-Schleife ja noch andere andere Namen von potentiell geöffneten Dateien abfangen. Die Personl würde ich da halt mit reinnehmen. Ich hab selbige übrigens ganz abgeschafft seit ich 2010/2013 nutze. Hab alles über Add-ins laufen. ist wesentlich praktischer wenn man die Datei mal verschicken will. Ein Add-in kann ich mitschicken, die Personl nicht.

1
Distel35 05.04.2013, 18:15
@augsburgchris

Chris,
kannst du mir zu dem Thema "Makros im Add-In" mal einen Link nennen?
Oder evtl. eine Excel-Datei mit so einem Add-In drin schicken? (per dropbox, upload oder E-Mail) username35 ät gmx punkt de.

Distel

0
Distel35 05.04.2013, 11:56

Hallo Chris,

endlich wieder da, aber Urlaub muss auch mal sein!
Danke für diesen kleinen Trick/Tipp mit dem Speichern des Namens von ThisWorkbook. Den Einzeiler werde ich mir merken und ggf. einbauen.

LG Distel

0

ich bin erstaunt, dass eine Kapazität wie Du, auch einmal eine Frage stellt.
Sehr schön, auch Dir mal auf die Sprünge helfen zu können.

M.E. kopierst Du zwar das ArbBl "Help", aber es heisst immer noch "Help".
Es muss umbenannt werden in "Orginal".

DatJahr = Year(Date): DatMonat = Month(Date) '2013, 3
If Len(DatMonat) = 1 Then DatMonat = "0" & DatMonat ' 03
DateiName = DatJahr & "-" & DatMonat & ".csv" '2013-03.csv

Worksheets(DateiName).Activate
Sheets(2).Name = "Orginal"
Sheets("Orginal").Select  

Das mal als Gedankenanstoß. Reicht das?

Gruß aus Berlin

Antwort bewerten Vielen Dank für Deine Bewertung
Distel35 30.03.2013, 18:03

Hallo Blitzcontrol,

ja, in VBA bin ich ich so gut, da fehlen mir die Grundlagen.
Ich weiß zwar, wie es gehen sollte, aber mir fehlen die (VBA-)Worte, um das perfekt zu programmieren.
Jetzt ist mir es halt passiert, dass ich den Rechner wechselte und (fast) alles gesichert hatte - bis auf die Excel-Makros in PERSONAL.XLSB.
Alle Makros, die ich in mühsamer Kleinarbeit z.T. unter Mitwirken einiger Foristen hier, erstellt hatte sind weg, und der alte Rechner wurde inzwischen platt gemacht!!

Also muss ich die Makros aus der Erinnerung wieder herstellen, leider war ich im Auswendiglernen auch nicht der Beste ;-)

Was ich machen möchte ist folgendes:
Die monatliche Telefonrechnung liegt als EinzelVerbindungsNachweis ("EVN-2013-03.csv") vor.
Bevor ich die Makros zum Formatieren usw. starte, öffne ich die aktuelle Datei (z.B.: im März: "EVN-2013-30.csv").
Das einzige Blatt darin wird umbenannt in Original.
Dann wird aus einer Datei ("Helpmuster.xlsx"), die im selben Verzeichnis liegt, ein Blatt namens "Help" hereinkopiert. Das Blatt Help behält seinen Namen in der Empfängerdatei.
Jetzt soll nicht in der Spenderdatei, sondern im Help der Empfängerdatei weitergearbeitet werden. Das klappt nicht, da ich per VBA-Befehl noch sagen müsste, in welcher Datei er jetzt weiterarbeiten soll.
Da hakt es!

LG Distel

0
Britzcontrol 31.03.2013, 09:15
@Distel35

Hallo Distel,

ab Excel 2007 speichert EXCEL die Makro nicht mehr in .xls-Dateien, sondern will explizit angegeben haben, dass Makros enthalten sind, also eine xlsm-Datei.

In einer .csv-Datei sind keine Makros möglich. Also sollte die Datei Helpmuster.xlsx als Makro-Datei gespeichert werden (Helpmuster.xlsm).

Wird in dieser Datei folgendes Makro gespeichert:

Sub HelpKopieren()
'Voraussetzung: "EVN-..." ist bereits geladen
'Dieses Makro in "Helpmuster.xlsm", Modul 1
'Diese Datei (Helpmuster.xlsm) ist aktiv

    Sheets("Help").Select
    Sheets("Help").Copy After:=Workbooks("EVN-2013-03.csv").Sheets(1)
    Sheets(1).Select
    Sheets(1).Name = "Original"
    Range("A3").Select 'o.ä.
End Sub

sollten sich Deine Wünsche erfüllen.

Übrigens, woher bekommt man einen EVN mit den Verbindungsdaten ? Würde mich evtl. auch interessieren, diese auszuwerten.

verschneite Ostergrüße aus Berlin

0
Higlav 31.03.2013, 14:14
@Distel35

Oje, alle Makro's weg? dann schick ich dir gleich noch eins :D

Public Sub GetRGB(RGB As Integer, ByRef R As Integer, ByRef G As Integer, ByRef B As Integer)
    R = RGB And 255
    G = RGB \ 256 And 255
    B = RGB \ 256 ^ 2 And 255
End Sub

Sub Test()
    Dim R As Integer
    Dim G As Integer
    Dim B As Integer
    GetRGB Cells(1, 1).Interior.Color, R, G, B
    MsgBox ("RGB: " & R & ";" & G & ";" & B)
End Sub

Und kennst du meinen Tabellenzeichner schon? :D

http://www.gutefrage.net/tipp/excel-tabellen-darstellen

0
Distel35 01.04.2013, 12:30
@Britzcontrol

Hallo blitzcontrol,

woher bekommt man einen EVN mit den Verbindungsdaten ?

den bekommst du im Telekom Kundencenter unter RechnungOnline Dokumente (Rechnungsarchiv), indem du
bei Dokumente EVN anstatt Rechnung und
bei Format CSV anstatt PDF wählst.

LG Distel

0
Distel35 01.04.2013, 12:47
@Higlav

Higlav,
was soll ich mit diesem Makro, das einen Laufzeitfehler '6' mit Überlauf erzeugt?

0

Hallo allerseits,

diese Stelle in dem Formatierungsmakro habe ich jetzt gelöst.
Allerdings fix auf diese eine Datei vom Monat März ("EVN-2013-03.csv") bezogen.
Kann mir da noch jemand auf die Sprünge helfen, dass das (innerhalb eines Jahres) variabel ist, was den Monat anbelangt?
Ich erinnere mich noch vage, dass das mit den 2 Platzhalterzeichen "??" anstelle der Monatszahl "03" ging, aber wie?

Hier das Makro, soweit ich gekommen bin:

Sub FormatNeu11()
'*************************************************************************
' Zweck: Formatierung von Telefonverbindungsdaten
'
' Arbeitsdatei: EVN_2013-03.csv(EVN_2013-03)
' Musterdatei : Helpmuster.xlsx(Help)
'
' Arbeitsdatei ist geöffnet
' Makros befinden sich alle in pesönlicher Arbeitsmappe PERSONAL.XLSM
'
'*************************************************************************
'
' Blatt mit Telefon-Roh-Daten umbenennen
    Worksheets(1).Name = "Original"
'
' Die Musterdatei "Helpmuster.xlsx" öffnen
' Blatt "Help" aus Musterdatei in Arbeitsdatei herein kopieren
    With Workbooks.Open("Helpmuster.xlsx")
    .Worksheets("Help").Copy After:=Workbooks("EVN_2013-03.csv").Sheets(1)
    End With
'
' Die Musterdatei "Helpmuster.xlsx" wieder schließen
    For Each wb In Application.Workbooks
        If wb.Name = "Helpmuster.xlsx" Then
        wb.Close
    End If
    Next
'
' im aktuellen Blatt: Datum in Spalte A wieder schwarz
' Frage: woher weiß Excel, dass das in Blatt "Help" stattfindet?
    Columns("A:A").Select
    With Selection.Font
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
'
' in Arbeitsdatei im Blatt "Orginal" Text in Spalten
    Sheets("Original").Select
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1)), _
        TrailingMinusNumbers:=True
'
' in Arbeitsdatei im Blatt "Help" den Bereich A2:A10 Schriftfarbe blau
    Sheets("Help").Select
    Range("A2:A10").Select
    With Selection.Font
        .Color = -65536
        .TintAndShade = 0
    End With
'
' Abeitsdatei jetzt unter .xlsx abspeichern
    ActiveWorkbook.SaveAs Filename:= _
        "C:\\\\Users\\\\Distel\\\\Documents\\\\Haushalt\\\\Telefon\\\\2013\\\\EVN_2013-03.xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

End Sub

LG Distel

Antwort bewerten Vielen Dank für Deine Bewertung
Oubyi 02.04.2013, 11:06

Hallo Distel,
das "Hantieren" mit Dateien ist nicht so mein Ding.
Aber schau mal, ob Dir diese Input-Box weiterhilft:

...

Dim EVN As String
EVN = InputBox("Monat eingeben, zwei Ziffern", "Monat")
EVN = "EVN_2013-" & EVN & ".csv"
With Workbooks.Open("Helpmuster.xlsx")
.Worksheets("Help").Copy After:=Workbooks(EVN).Sheets(1)
End With

...

Gruß
Uwe
(:o)

1
Distel35 02.04.2013, 13:18
@Oubyi

Hallo Uwe,

es funktioniert! Danke

LG Distel

0
Oubyi 02.04.2013, 23:30
@Distel35

Freut mich, dass ich helfen konnte ☼

0

Ich glaube, jetzt habe ich eine bildliche Vorstellung von Dir ??

Gruß aus Berlin

Maske? - (Excel, makro, VBA)
Antwort bewerten Vielen Dank für Deine Bewertung
Distel35 01.04.2013, 12:18

kann das sein, dass du mich mit Oubyi verwechselst?
weil auf dem von dir geposteten Foto

Treasure of the month
OUBI war mask

steht.

0
Britzcontrol 01.04.2013, 13:11
@Distel35

Jaaaa ...

... aber ich dachte immer, der "Antwortkaiser" Distel35, Oubyi und Iamiam ist eine Person mit drei Synonymen.
(besonders bei Diskussionen um den SVERWEIS)

Dem scheint wohl nicht so zu sein. > ACH SOO ;)

Gruß aus Berlin

0
Oubyi 02.04.2013, 23:31
@augsburgchris

Aber wir unterstützen Dich nach besten Kräften (meistens).

0
augsburgchris 03.04.2013, 17:44
@Oubyi

ja, einer gegen alle und alle gegen einen ..... oder so ähnlich

0
Distel35 05.04.2013, 18:08
@augsburgchris

vor ein paar Jahren konnte ich
=INDEX(Matrix; VERGLEICH(); VERGLEICH() ) noch nicht schreiben -
heute bin ich einen Fan davon!

0

Was möchtest Du wissen?