Microsoft Excel

Herbers Excel/VBA-Archiv

Variable wird nur im Einzelschrittmodus gesetzt | Herbers Excel-Forum


Betrifft: Variable wird nur im Einzelschrittmodus gesetzt von: Robin Karthaus
Geschrieben am: 23.10.2008 15:13:39

Hallo Cracks,

mir ist jetzt zweimal aufgefallen, dass zum Teil Befehle im normalen Modus nicht richtig ausgeführt werden, im Einzelschrittmodus - oder wenn man Haltepunkte setzt, aber schon. Zum Beispiel hatte ich das Problem, dass eine String-Variable immer mit einem Leerstring belegt war und einen Fehler auslöste, wenn ich aber auf den Befehl, wo sie gefüllt wird, einen Haltepunkt setzte, funktionierte alles. Hat da jemand eine Erklärung für? Sollte ich vielleicht eine Wartezeit vor dem entsprechenden Befehl einbauen?

Vielen Dank für eure Tipps,

Robin

  

Betrifft: Variable wird nur im Einzelschrittmodus gesetzt von: Uwe (:o)
Geschrieben am: 23.10.2008 15:26:16

Hi Robin,
bist Du denn nachdem Du gesehnen hast, dass die Variable gefüllt war, bei bestehendem Haltepunkt mit F5 weitergegangen? Vielleicht wird sie ja nach dem Befüllen wider geleert?.
Ist nur so 'ne Idee. Lasse die Frage offen.

Gruß
Uwe
(:o)


  

Betrifft: AW: Variable wird nur im Einzelschrittmodus gesetzt von: Robin Karthaus
Geschrieben am: 23.10.2008 16:17:12

Hallo Uwe,

danke für die Antwort, klar bin ich dann weitergegangen, habe auch dort, wo sie abgefragt wird, Haltpunkt gesetzt und dann stimmt alles. Danach klappte es auch im Normalmodus.


  

Betrifft: AW: Variable wird nur im Einzelschrittmodus gesetzt von: Horst
Geschrieben am: 23.10.2008 17:41:39

Hi,

wo und wie sind die Variablen deklariert?

mfg Horst


  

Betrifft: AW: Variable wird nur im Einzelschrittmodus gesetzt von: Robin Karthaus
Geschrieben am: 23.10.2008 17:50:40

Öhm, deklariert? Außerhalb des Subs hab ich die Variablen als String deklariert. Kann das Programm leider nicht hochladen, das ist riesig und dann gibts Haue wegen Firmengeheimnisse und so.

Die Variablen heißen
DiagrammnameKräfte
und
DiagrammnameBeschleunigungen

Der Teilcode sieht so aus:

objnew.Charts.Add
With objnew.ActiveChart
.ChartType = xlXYScatterLinesNoMarkers
.Name = "Diagramme Beschleunigungen"
.HasTitle = True
.ChartTitle.Characters.Text = "Diagramme Beschleunigungen"
.ChartTitle.Characters.Font.Bold = True
.ChartTitle.Characters.Font.Size = 12
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "gefahrene Strecke [m]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Beschleunigung [m/s²]"
.HasLegend = True
.Legend.Position = xlTop
' .PlotArea.Interior.ColorIndex = xlNone
.SeriesCollection(1).Delete

DiagrammnameBeschleunigungen = .CodeName

End With

objnew.Charts.Add
With objnew.ActiveChart
.ChartType = xlXYScatterLinesNoMarkers
.SetSourceData Source:=Sheets("Datenmatrix").Range("B2")
.Name = "Diagramme Kräfte"
.HasTitle = True
.ChartTitle.Characters.Text = "Diagramme Kräfte"
.ChartTitle.Characters.Font.Bold = True
.ChartTitle.Characters.Font.Size = 12
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "gefahrene Strecke [m]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Kraft [N]"
.HasLegend = True
.Legend.Position = xlTop
' .PlotArea.Interior.ColorIndex = xlNone
.SeriesCollection(1).Delete

DiagrammnameKräfte = .CodeName

End With

' unnötige Tabellenblätter löschen
Application.DisplayAlerts = False
objnew.Sheets("Datenmatrix").Delete
objnew.Sheets("Tabelle1").Delete
objnew.Sheets("Tabelle2").Delete
objnew.Sheets("Tabelle3").Delete
Application.DisplayAlerts = True

' notwendigen VBA-Code in neue Arbeitsmappe kopieren
Dim objCodeModule As Object
' On Error GoTo errhandler
Set m = objnew.VBProject.vbcomponents.Add(1)
m.Name = "Diagrammfunktionen"
Set objCodeModule = objdgl.VBProject.vbcomponents("Diagrammfunktionen").CodeModule
With objnew.VBProject.vbcomponents("Diagrammfunktionen").CodeModule
.DeleteLines 1, .CountOfLines
.InsertLines 1, objCodeModule.Lines(1, objCodeModule.CountOfLines)
End With
Set objCodeModule = objdgl.VBProject.vbcomponents("Diagramm1").CodeModule

With objnew.VBProject.vbcomponents(DiagrammnameBeschleunigungen).CodeModule
.DeleteLines 1, .CountOfLines
.InsertLines 1, objCodeModule.Lines(1, objCodeModule.CountOfLines)
End With

Set objCodeModule = objdgl.VBProject.vbcomponents("Diagramm2").CodeModule

With objnew.VBProject.vbcomponents(DiagrammnameKräfte).CodeModule
.DeleteLines 1, .CountOfLines
.InsertLines 1, objCodeModule.Lines(1, objCodeModule.CountOfLines)
End With


Gruß
Robin


  

Betrifft: AW: Variable wird nur im Einzelschrittmodus gesetzt von: Horst
Geschrieben am: 23.10.2008 18:36:12

Hi,

"...Außerhalb des Subs hab ich die Variablen als String deklariert.."

Schön, aber wie genau sieht die Deklaration aus?

Public DeineVariable As String

oder

Private deineVariable As String

oder

Dim DeineVariable As String

mfg Horst


  

Betrifft: AW: Variable wird nur im Einzelschrittmodus gesetzt von: Robin Karthaus
Geschrieben am: 24.10.2008 09:03:25

Achso, entschuldigung, hab sie mit

Dim Variabe As String

deklariert.


Beiträge aus den Excel-Beispielen zum Thema "Variable wird nur im Einzelschrittmodus gesetzt"