Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

String-Variable wird falsch befüllt

Betrifft: String-Variable wird falsch befüllt von: Thomas K
Geschrieben am: 08.09.2014 10:42:00

Hallo zusammen,

Folgendes Problem:

Ich habe eine String-Variable, die sich folgendermaßen zusammensetzt:

Variable = Name_Tabellenblatt + Inhalt_Zelle_geändert

Beim Schließen der Excel-Datei wird nun die Variable befüllt. Es wird durch alle Tabellenblätter mit einer for-Schleife durchgegangen und überprüft, bei welchen Zellen sich etwas geändert hat. Danach wird automatisch eine Email generiert und die Variabel übergeben.

Jedoch wird die Variable nicht so befüllt wie ich möchte.

Anstatt die Variable so zu befüllen :

Variable = Name_Tabellenblatt1 + geänderte_Zellen_Tabellenblatt1 + Name_Tabellenblatt2+ geänderte_Zellen_Tabellenblatt2+ ....

wird es folgendermaßen gemacht:

Variable = Name_Tabellenblatt1 + Name_Tabellenbaltt2 + ...+ geänderteZellen_Tabellenbaltt1 + geänderte_Zellen_Tabellenblatt 2 +...

Dadurch geht der Überblick verloren, bei welchem Tabellenblatt sich was geändert hat.

Wie kann ich dieses Problem lösen?

Vielen Dank!

Gruß,
Thomas

  

Betrifft: AW: String-Variable wird falsch befüllt von: yummi
Geschrieben am: 08.09.2014 10:46:00

Hallo Thomas,

laut Orakel befüllst Du deine Variable an der falschen Stelle in deiner For Schleife, ist aber etwas milchig heute ;-)

Gruß
yummi


  

Betrifft: AW: String-Variable wird falsch befüllt von: Rudi Maintaire
Geschrieben am: 08.09.2014 13:16:04

Hallo,
zeig mal deinen Code

Gruß
Rudi


  

Betrifft: AW: String-Variable wird falsch befüllt von: Thomas K
Geschrieben am: 08.09.2014 13:58:32

Hier mein code:

 
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim filename As String
Dim i As Integer
Dim h As Integer
Dim sheet_Anzahl As Integer
Dim x As Integer
Dim intCounter As Integer
Dim TabName As String
Dim WS As Worksheet
Dim Split As String
 
Dim sheet_name As Variant

If MsgBox("Änderungen als EMail senden?", vbYesNo, "EMail senden?") = vbYes Then
    sheet_Anzahl = ActiveWorkbook.Worksheets.Count    'Anzahl der Arbeitsmappen bestimmen
   
    For x = 1 To sheet_Anzahl
        Sheets(x).Activate                                        'Auswahl der Arbeitsmappe
        sheet_name = ActiveWorkbook.Worksheets(x).Name            'Name der ausgewählten  _
Arbeitsmappe
        LetzteZeile = Sheets(x).Range("a65336").End(xlUp).Row
            
     For i = 2 To LetzteZeile
            cell_temp = Cells(i, 7) ' Spalte 7 enthält Markierung "X" falls Zelle zuvor geä _
ndert wurde            
            cell_wert = Cells(i, 2)
            
                cell_historie = name_temp + Chr(13) + Cells(i, 1) + ": " + cell_wert
                If cell_temp = "X" Then      'Abfrage, ob Änderung stattgefunden hat
                intCounter = intCounter + 1
                
                If intCounter = 1 Then
                cell_historie = cell_historie & Chr(13) & sheet_name
                name_temp = cell_historie
                ElseIf intCounter <> 1 Then
                name_temp = cell_historie
                End If
            End If
            
            Cells(i, 7).Clear           'Markierung "X" für Änderungen werden gelöscht
   
        Next i
          
    intCounter = 0
   
    Next x
    
    Call Email_senden(filename) 'In Email wird nampe_temp verwendet
    Else
    Exit Sub
End If
End Sub 
Ziel ist, dass mir in der Variable "name_temp" nacheinander die Namen der sheets (sheet_name) mit den geänderten Zellen aufgelistet werden. Ich habe es, wie im Code zu sehen ist, mit einem Counter versucht. Dass mir nur bei der ersten geändertetn Zelle der Sheet_name vorangestellt wird und dann wenn der Counter >1 ist, nicht mehr. Die Richtung stimmt, jedoch steht vor dem sheet_name noch die erste geänderte Zelle des jeweiligen sheets.


  

Betrifft: AW: String-Variable wird falsch befüllt von: Ewald
Geschrieben am: 08.09.2014 15:32:44

Hallo,

teste mal so

 name_temp = name_temp & cell_historie
das Elseif kannst du dir sparen.

Gruß Ewald


 

Beiträge aus den Excel-Beispielen zum Thema "String-Variable wird falsch befüllt"