Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VBA: Tabellenblatt weiterschalten





Frage

Hallo, ich habe ein etwas dubioses Problem. folgendes funktioniert: Do count_sheets = count_sheets + 1 Workbook = ActiveWorkbook.Name Sheet = ActiveSheet.Name If count_sheets = sheetno Then Exit Do ActiveSheet.Next.Select Loop Wenn ich die Datei das erste mal aufmache und den Button drücke. Kommt vor dem letzten Sheet "laufzeitfehler 13" ´Typen unverträglich´ mit gelber markierung auf ActiveSheet.Next.Select. Führe ich den Befehl noch einmal aus, dann geht alles wunderbar bis ich das File noch einmal schliesse und wieder öffne, dann gehts wieder nicht. Hat da jemand ne Ahnung? Grüße Oli

Antwort 1 von coros

Hallo Oli,

kannst Du mal erklären, was der Code machen soll? Denn im Moment weiß ich erhlich nicht, was der Teilcode für eine Bedeutung haben soll und glaube auch nicht, dass der so, wie Du ihn hier gepostet hast, überhaupt bei Dir jemals funktioniert hat. Es sei denn, bei Dir steht noch mehr Code, den Du hier nicht gepostet hast.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Oli00

Hi,

doch wird so benutzt. Aber eigentlich noch einfacher:

sheet_no = activesheet.count

Do
count_sheets = count_sheets + 1
If count_sheets = sheetno Then Exit Do
ActiveSheet.Next.Select
Loop


Dadurch läuft er dann einmal. Hab allerdings auch gerade festgestellt, dass er den Fehler bringt, wenn ich das File aufmache und einfach nur auf das Tabellenblatt klicke. Allerings dann nicht mit der Option den Fehler zu Debuggen. Sprich "debuggen" ist grau unterlegt...

Antwort 3 von Oli00

.-.-.-

Antwort 4 von coros

Hallo Oli,

also ist der Coe doch anders, als aus Deiner Frage. Was für einen Wert soll den

activesheet.count


liefern?
Wo wird die Variable

sheetno 


aus der Befehlszeile

If count_sheets = sheetno Then Exit Do


gebildet?


MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von Oli00

Sorry ich werde in Zukunft präziser werden.

sheet_no sollte sheetno heissen!

sheetno = ActiveWorkbook.Sheets.count

gibt die Anzahl der vorhandenen Tabellenblätter.

Antwort 6 von coros

Hallo Oli,

dann poste hier bitte den Code, so wie er in Deiner Datei steht. Denn ich bastele mir jetzt nicht Dein Makro zusammen und habe dann eventuell ein völlig anderes Makro als bei Dir vorhanden ist.

Für eine Lösung benötigt man Dein Makro, so wie Du es verwendest und nicht irgend etwas hier hingeschriebenes. Denn wie Du siehst, tauchen dort einige Fehler auf. Deshalb auch meine Aussage, dass der Code so bei Dir noch nie gelaufen sein kann.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 7 von Oli00

Also ganz genauso wie er drinsteht. Problem ist, dass ein Essbase Plugin verwendet wird. Deshalb habe ich diesen Teil herausgenommen, weil er sowieso nicht läuft. Problem ist eben auch bei den Tabellenblatt weiterschalten. Allerdings. Habe ich ja schon gesagt, dass das Problem nicht am Code liegt, sondern an irgendwetwas anderem. Wohl vielleicht an dem Format des Tabellenblattes. Es ist nur ein Diagramm vorhanden und das Tabellenblatt wurde aus einem anderen Excelfile kopiert. Seitdem ist auch das Problem existent.


Sub Ess_connect()

´ variables
Dim sheetno
sheetno = ActiveWorkbook.Sheets.count
Dim count_sheets
count_sheets = 0


Do

´Variables
count_sheets = count_sheets + 1
Workbook = ActiveWorkbook.Name
Sheet = ActiveSheet.Name

´connect Sheets
If Sheet = "Illustration1_source" Then
x = EssVConnect("[" & Workbook & "]" & "Illustration1_source", "kress", "", "sdeu132064", "giu_mix", "0Draft_M")
ElseIf Sheet = "Graphics_source" Then
x = EssVConnect("[" & Workbook & "]" & "Graphics_source", "kress", "", "sdeu132064", "accprof", "accprof")
ElseIf Sheet = "Tables_source" Then
x = EssVConnect("[" & Workbook & "]" & "Tables_source", "kress", "", "sdeu132064", "accprof", "accprof")
ElseIf Sheet = "CausalAvg_CLI" Then
x = EssVConnect("[" & Workbook & "]" & "CausalAvg_CLI", "kress", "", "sdeu132064", "giu_mix", "0Draft_M")
End If

If count_sheets = sheetno Then Exit Do

´ Next Sheet
ActiveSheet.Next.Select

Loop

Sheets("Control").Select


End Sub


Antwort 8 von coros

Hallo Olli,

sorry, aber ich glaube, ich werde Dir nicht helfen können. Es sei denn, Du könntest mir die Datei mal zukommen lassen. Dann könnte ich mir das mal ansehen. Denn für Hilfe fehlt in diesem Fall doch etwas mehr als nur der VBA-Code.

Wobei ich den Befehl

ActiveSheet.Next.Select


auch nicht kenne. Aber ich bin ja auch nicht allwissend. ;o)

Also wenn Du willst, schicke die Datei. E-Mailadresse findest Du auf meiner HP unter anderem im Impressum. Binde in der Betreffzeile irgendwie das Wort "Supportnet" und den Namen (Nickname), unter dem Du hier gepostet hast mit ein, da ich alle Mails deren Absender ich nicht kenne, ungelesen lösche.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 9 von Oli00

Hi Oliver,

habe es mittlerweile anders gelöst. Ich habe das Blatt einfach komplett rausgeschmissen und es noch mal selber erstellt. Danach lief es. Irgendwie muss wie gesagt ein Fehler passiert sein, als das Blatt von der anderen Excel Datei kopiert wurde...

Vielen Dank noch mal für deine Hilfe! Werde ich sicher mal wieder brauchen!

Grüße

Oli