Microsoft Excel

Herbers Excel/VBA-Archiv

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

per VBA Name in Zelle schreiben & Datei kleiner ma


Betrifft: per VBA Name in Zelle schreiben & Datei kleiner ma von: simon
Geschrieben am: 15.01.2018 14:47:35

hallo zusammen

ich habe 2 kleine probleme.

1. wie kann ich in diesen VBA-Code den aktuellen Blattname einbauen unter "B5".

Option Explicit


Sub NeuesBlatt_erstellen(Zelle As Range)
    Dim Zeile As Long
    Dim wksListe As Worksheet
    Dim wksDaten As Worksheet
    Dim wksVorlage As Worksheet
    
    
    Set wksListe = ActiveWorkbook.Worksheets("Mängelliste")
    Set wksVorlage = ActiveWorkbook.Worksheets("Vorlage")
    If ActiveSheet.Name <> wksListe.Name Then
        MsgBox "Das Makro ""NeuesBlatt_erstellen"" nur Starten, wenn das Blatt """ _
            & wksListe.Name & """ das aktive Blatt ist!", _
            vbInformation + vbOKOnly, "Hinweis"
        GoTo Beenden
    End If
    
    Zeile = Zelle.Row
    If Trim(wksListe.Cells(Zeile, 1).Text) = "" Then
        MsgBox "In Spalte A der aktiven Zeile ist noch keine Mangel-Nr. eingetragen!", _
            vbInformation + vbOKOnly, "Makro: NeuesBlatt_erstellen"
    ElseIf fncCheckSheet(wksListe.Cells(Zeile, 1).Text, ActiveWorkbook) = True Then
        MsgBox "Das Blatt zur Mangel-Nr. """ & wksListe.Cells(Zeile, 1).Text _
            & """ ist bereits vorhanden!", _
            vbInformation + vbOKOnly, "Makro: NeuesBlatt_erstellen"
    Else
        If MsgBox("Neues Blatt für Mangel Nr, """ & wksListe.Cells(Zeile, 1).Text & """  _
erstellen?", _
            vbQuestion + vbOKCancel, "Mängel-Datenblatt erstellen") = vbCancel Then GoTo  _
Beenden
            
        wksVorlage.Copy before:=wksVorlage
        
        Set wksDaten = ActiveSheet
        
        wksDaten.Name = wksListe.Cells(Zeile, 1).Text
        
        wksDaten.Range("B5").Value = wksListe.Cells(Zeile, 1).Value 'Mangel-Nr. eintragen
        
    End If
Beenden:
End Sub


Sub Daten_in_Mangelblatt_eintragen()
    Dim Zeile As Long
    Dim strBlatt As String
    Dim wksListe As Worksheet
    Dim wksDaten As Worksheet
    Dim wksVorlage As Worksheet
    
    
    Set wksListe = ActiveWorkbook.Worksheets("Mängelliste")
    Set wksVorlage = ActiveWorkbook.Worksheets("Vorlage")
    
    If ActiveSheet.Name <> wksListe.Name Then
        MsgBox "Das Makro ""Daten_in_Mangelblatt_eintragen"" nur Starten, wenn das Blatt """ _
            & wksListe.Name & """ das aktive Blatt ist!", _
            vbInformation + vbOKOnly, "Hinweis"
        GoTo Beenden
    End If
    
    Zeile = ActiveCell.Row
    strBlatt = wksListe.Cells(Zeile, 1).Text
    
    If Trim(strBlatt) = "" Then
        MsgBox "In Spalte A der aktiven Zeile ist noch keine Mangel-Nr. eingetragen!", _
            vbInformation + vbOKOnly, "Makro: Daten_in_Mangelblatt_eintragen"
    End If
    
    If fncCheckSheet(strBlatt, ActiveWorkbook) = True Then
        Set wksDaten = ActiveWorkbook.Worksheets(strBlatt)
    Else
        If MsgBox("Das Blatt zur Mangel-Nr. """ & strBlatt & """ ist noch nicht angelegt!" _
            & vbLf & "Neues Blatt jetzt erstellen?", _
            vbQuestion + vbOKCancel, "Makro: Daten_in_Mangelblatt_eintragen") = vbOK Then
            
            wksVorlage.Copy before:=wksVorlage
        
            Set wksDaten = ActiveSheet
        
            wksDaten.Name = strBlatt
        
            wksDaten.Range("B5").Value = wksListe.Cells(Zeile, 11).Value 'Mangel-Nr. eintragen
        End If
    End If
    
    If Not wksDaten Is Nothing Then
        'Daten aus Liste in Blatt übertragen
        With wksDaten
            .Range("G5").Value = wksListe.Cells(Zeile, 2)     'Datum
            .Range("B17").Value = wksListe.Cells(Zeile, 3)     'Gebäude
            .Range("B19").Value = wksListe.Cells(Zeile, 4)     'Ebene
            .Range("B21").Value = wksListe.Cells(Zeile, 5)     'Achse Sektor Raum
            .Range("G7").Value = wksListe.Cells(Zeile, 6)     'Mangel
        End With
    End If
Beenden:
    
End Sub

Public Function fncCheckSheet(varBlatt, Optional Wb As Workbook) As Boolean
  'Prüft ob Blatt in Arbeitsmappe vorhanden
  Dim objSheet As Object
  On Error GoTo Fehler
  If Wb Is Nothing Then Set Wb = ActiveWorkbook
  Set objSheet = Wb.Sheets(varBlatt)
  fncCheckSheet = True
  Exit Function
Fehler:
  fncCheckSheet = False
End Function

2. wie kann ich eine datei verkleinern? hab ein gemishc aus formeln und vba. bin jetz bei 1.8mb archiviert bei 874kb...

besten dank für eure hilfe!

lg simu

  

Betrifft: AW: per VBA Name in Zelle schreiben & Datei kleiner ma von: Burak
Geschrieben am: 15.01.2018 15:04:19

1. Range("B5").Value = ActiveSheet.Name

2. verkleinern grundsätzlich nur indem du einen Teil des Codes entfernst bzw den Code verkürzt ohne Inhalt zu entfernen


  

Betrifft: AW: per VBA Name in Zelle schreiben & Datei kleiner ma von: simon
Geschrieben am: 15.01.2018 15:13:28

hallo Burak

besten dank für deine rasche Antwort!

Ich habe dies etwas zu wenig beschrieben.
Mein Problem ist nicht was, sonder woich es einbauen muss.
Irgendwie läuft das nicht. es zeigt unter "B5" nichts an, auch wenn ich das File schlisse und wieder öffne.

und ds mit dem verkleinern hab ich mir schon gedacht, das wird wohl nichts bei mir - zu wenig ahnung von vba;)


  

Betrifft: AW: per VBA Name in Zelle schreiben & Datei kleiner ma von: Burak
Geschrieben am: 15.01.2018 16:38:14

dann brauche ich noch mehr Informationen? Wenn der Blattname nach dem Makro einfach nur in Zelle B5 stehen soll und weiter nichts, pack den Befehl ans Ende des Makros. Soll mit dem Blattnamen in B5 noch mehr gemacht werden?

Schließen, öffnen? soll es automatisch zu jedem Zeitpunkt den Tabellennamen in B5 stehen haben, ohne dass der Benutzer aktiv was unternimmt?


  

Betrifft: AW: per VBA Name in Zelle schreiben & Datei kleiner ma von: Simon
Geschrieben am: 16.01.2018 08:33:14

Hallo Burak

Besten dank nochmals für deineHilfe

Ich benötige:

1. erstellen eines neuen Falles über die Lsite (Eintrage nummer in Spalte A)
2. In neuem Blatt (erstellt aus Vorlage) in "B5" diese Nr übernehmen

https://www.herber.de/bbs/user/118996.zip


  

Betrifft: AW: per VBA Name in Zelle schreiben & Datei kleiner ma von: UweD
Geschrieben am: 16.01.2018 09:55:23

Hallo


B5 in neuem Blatt eintragen...

    ElseIf Target.Text > "" Then
        Sheets("Vorlage").Copy before:=Sheets(ThisWorkbook.Sheets.Count)
        ActiveSheet.name = Target
        Target.Offset(0, 1) = ActiveSheet.name
        ActiveSheet.Range("B5") = Target
    ElseIf Target.Text = "" Then


LG UweD


  

Betrifft: AW: per VBA Name in Zelle schreiben & Datei kleiner ma von: simon
Geschrieben am: 16.01.2018 14:40:40

Hi UweD

Danke für deine Hilfe dies Funktioniert einwandfrei:)

lg simon


  

Betrifft: AW: gern geschehen owt von: UweD
Geschrieben am: 16.01.2018 15:14:01




Beiträge aus dem Excel-Forum zum Thema "per VBA Name in Zelle schreiben & Datei kleiner ma"