Zum Inhalt springen

vba

Mitglieder
  • Gesamte Inhalte

    19
  • Benutzer seit

  • Letzter Besuch

Beiträge von vba

  1. Hallo,

    weil man nicht sehen kann was da reinkopiert wird,

    lässt sich die Frage schlecht beantworten.

    Das Beispiel unten formatiert nach Rückfrage die ganze Spalte mit dem Sonderformat "Postleitzahl".

    Vielleicht hilft es ja:

    
    Sub PLZ_Fomat()
    
    Dim lngSpalte As Long
    
    'ganze Spalte als Postleitzahl formatieren
    
    
      lngSpalte = ActiveCell.Column
    
      Columns(lngSpalte).Select
    
    
      If MsgBox("Spalte " & lngSpalte & " als PLZ formatieren?", _
    
                vbQuestion + vbYesNoCancel, _
    
                "") = vbYes Then
    
    
        Columns(lngSpalte).NumberFormat = "00000"
    
      Else
    
        MsgBox "Keine Änderung vorgenommen.", , ""
    
      End If
    
    
    End Sub
    
    

    Gruß

    Alfons

  2. Wenn ich die Exceldatei mit makros speicher will muss ichs als *.xlms und die kann man hier nich hochladen.

    Das war mir nicht klar.

    OK die Datei ist jetzt aber angekommen und wenn das Makro an der richtigen Stelle eingefügt wird, funktioniert es auch einwandfrei.

    Für Tabelle1 muss das Makro im Klassenmodul von Tabelle1 abgespeichert sein und nicht in Modul1.

    Ich hab hier keine Fehlermeldungen.

    Gruß

    Alfons

  3. Hallo,

    auch bei mehreren Spalten reicht ein Makro.

    der Tabellenaufbau ist mir aber nicht ganz klar.

    Wenn in Spalte A die Namen stehen und in Zeile 1 die Kategorien

    versuch's mal damit:

    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    
      'aussteigen wenn nicht im Bereich B2:H10
    
      If Application.Intersect(Target, Range("B2:H10")) Is Nothing Then Exit Sub
    
      'aussteigen wenn mehr als eine Zelle markiert
    
      If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then Exit Sub
    
      'hochzählen wenn Zahl
    
      If IsNumeric(Target.Value) Then Target.Value = Target.Value + 1  
    
    End Sub
    
    

    Gruß

    Alfons

  4. da steht aber nichts von Baujahr: ImageShack - Hosting :: screenhunter06jun251512bh1.jpg

    
    Sub Modulaufruf_Zeilen_kopieren_alle_Tabellen()
    
    'kopiert immer zwei Zeilen
    
    Dim letzte_Zeile As Long, Zeile As Long, Treffer As Long
    
    Dim wkb_Neu As Workbook
    
    Dim wks As Worksheet
    
    Dim Antwort As Integer
    
    
    Antwort = MsgBox("Ab jetzt werde ich meine Fragen genauer formulieren", vbYesNo, "")
    
    
    If Antwort = 7 Then
    
      Exit Sub
    
    End If
    
    
    Set wkb_Neu = Workbooks.Add
    
    
    Treffer = 1
    
    For Each wks In ThisWorkbook.Worksheets
    
      wks.Activate
    
      'letzte Zeile mit Inhalt Spalte A
    
      letzte_Zeile = wks.Cells(Rows.Count, 1).End(xlUp).Row
    
    
      For Zeile = 1 To letzte_Zeile
    
        If wks.Cells(Zeile, 1).Value = "Typ" Then
    
          'wks.Rows(Zeile).Copy wkb_Neu.Worksheets("Tabelle1").Cells(Treffer, 1)
    
          wks.Range(Cells(Zeile, 1), Cells(Zeile + 1, Columns.Count)).Copy _
    
            wkb_Neu.Worksheets("Tabelle1").Cells(Treffer, 1)
    
          Treffer = Treffer + 2
    
        End If
    
      Next Zeile
    
    Next wks
    
    
    wkb_Neu.Activate
    
    Set wkb_Neu = Nothing
    
    MsgBox Treffer - 1 & " Zeilen kopiert", , ""
    
    
    End Sub
    
    

    Gruß

    Alfons

    -------------------------

    meine Excelseiten: Excel-Dateien und VBA für Excel

    -------------------------

  5. ist nicht schön aber fluppt für alle Tabellen:

    
    Sub Modulaufruf_Zeilen_kopieren_alle_Tabellen()
    
    'kopiert alle Zeilen in neue Mappe wenn
    
    'in Spalte A "Typ" steht
    
    Dim letzte_Zeile As Long, Zeile As Long, Treffer As Long
    
    Dim wkb_Neu As Workbook
    
    Dim wks As Worksheet
    
    
    Set wkb_Neu = Workbooks.Add
    
    
    For Each wks In ThisWorkbook.Worksheets
    
      wks.Activate
    
      'letzte Zeile mit Inhalt Spalte A
    
      letzte_Zeile = wks.Cells(Rows.Count, 1).End(xlUp).Row
    
    
      For Zeile = 1 To letzte_Zeile
    
        If wks.Cells(Zeile, 1).Value = "Typ" Then
    
          Treffer = Treffer + 1
    
          wks.Rows(Zeile).Copy wkb_Neu.Worksheets("Tabelle1").Cells(Treffer, 1)
    
        End If
    
      Next Zeile
    
    Next wks
    
    
    wkb_Neu.Activate
    
    Set wkb_Neu = Nothing
    
    MsgBox Treffer & " Zeilen kopiert", , ""
    
    
    End Sub
    
    

    Gruß

    Alfons

    -------------------------

    meine Excelseiten: Excel-Dateien und VBA für Excel

    -------------------------

  6. und wo genau liegt das Problem? Fehlermeldung? Excelversion?

    den folgenden Code kannst Du auch in ein normales Modul packen.

    Die zu durchsuchende Tabelle muss dann aber die aktive sein!

    
    Sub Modulaufruf_Zeilen_kopieren_2()
    
    'kopiert alle Zeilen in neue Mappe wenn
    
    'in Spalte A "Typ" steht
    
    Dim letzte_Zeile As Long, Zeile As Long, Treffer As Long
    
    Dim wkb_Neu As Workbook
    
    Dim wks As Worksheet
    
    
    Set wks = ThisWorkbook.ActiveSheet
    
    'letzte Zeile mit Inhalt Spalte A
    
    letzte_Zeile = wks.Cells(Rows.Count, 1).End(xlUp).Row
    
    
    Set wkb_Neu = Workbooks.Add
    
    
    For Zeile = 1 To letzte_Zeile
    
    
      If wks.Cells(Zeile, 1) = "Typ" Then
    
        Treffer = Treffer + 1
    
        wks.Rows(Zeile).Copy wkb_Neu.Worksheets("Tabelle1").Cells(Treffer, 1)
    
      End If
    
    
    Next Zeile
    
    
    Set wks = Nothing
    
    Set wkb_Neu = Nothing
    
    MsgBox Treffer & " Zeilen kopiert", , ""
    
    
    End Sub
    
    

    Gruß

    Alfons

    -------------------------

    meine Excelseiten: Excel-Dateien und VBA für Excel

    -------------------------

  7. Hallo,

    versuch das mal:

    
    Sub Zeilen_kopieren()
    
    'kopiert alle Zeilen in neue Mappe wenn
    
    'in Spalte A "Typ" steht
    
    Dim letzte_Zeile As Long, Zeile As Long, Treffer As Long
    
    Dim wkb_Neu As Workbook
    
    
    Set wkb_Neu = Workbooks.Add
    
    
    'letzte Zeile Spalte A
    
    letzte_Zeile = Cells(Rows.Count, 1).End(xlUp).Row
    
    
    For Zeile = 1 To letzte_Zeile
    
    
      If Cells(Zeile, 1) = "Typ" Then
    
        Treffer = Treffer + 1
    
        Rows(Zeile).Copy wkb_Neu.Worksheets("Tabelle1").Cells(Treffer, 1)
    
      End If
    
    
    Next Zeile
    
    
    Set wkb_Neu = Nothing
    
    MsgBox Treffer & " Zeilen kopiert", , ""
    
    
    End Sub
    
    

    Gruß

    Alfons

    -------------------------

    meine Excelseiten: Excel-Dateien und VBA für Excel

    -------------------------

  8. Hallo,

    dein Problem habe ich nicht so ganz verstanden und meine Antwort bezieht sich

    jetzt nur auf eine Tabelle:

    Zelle A1 ist leer.

    Ab Zelle B1 bis n1 steht immer ein Datum.

    In Spalte A ab Zelle A2 bis A? steht immer die Uhrzeit.

    Dann bau dir eine UserForm mit folgenden Steuerelementen:

    ComboBox cmb_Datum

    ComboBox cmb_Uhrzeit

    Textfeld txt_Eingabe

    CommandButton cmb_OK

    und hier der Code dazu:

    Private Sub UserForm_Initialize()

    'Datum aus Zeile 1 auslesen bis letzte Spalte mit Inhalt

    'und in cmb_Datum eintragen:

    For Spalte = 2 To Cells(1, Columns.Count).End(xlToLeft).Column

    UserForm1.cmb_Datum.AddItem (Cells(1, Spalte))

    Next Spalte

    'Uhrzeit aus Spalte A auslesen bis letzte Zeile mit Inhalt

    'und in cmb_Uhrzeit eintragen:

    For Zeile = 2 To Cells(Rows.Count, 1).End(xlUp).Row

    UserForm1.cmb_Uhrzeit.AddItem Format((Cells(Zeile, 1)), "hh:mm")

    Next Zeile

    UserForm1.cmb_Datum.ListIndex = 0

    UserForm1.cmb_Uhrzeit.ListIndex = 0

    cmb_OK.Enabled = False

    End Sub

    Private Sub cmb_Datum_Change()

    Spalte = cmb_Datum.ListIndex + 2

    Call Zelle_zeigen

    End Sub

    Private Sub cmb_Uhrzeit_Change()

    Zeile = cmb_Uhrzeit.ListIndex + 2

    Call Zelle_zeigen

    End Sub

    Sub Zelle_zeigen()

    Cells(Zeile, Spalte).Select

    End Sub

    Private Sub cmb_OK_Click()

    Cells(cmb_Uhrzeit.ListIndex + 2, cmb_Datum.ListIndex + 2) = txt_Eingabe

    End Sub

    Hilft dir das?

    Gruß

    Alfons

    ------------------------

    meine Excelseiten: Excel-Dateien und VBA für Excel

    -------------------------

  9. >

    ... die Excel Datei in eine XML Datei umzuwandeln, irgendwo abzulegen und letztendlich natürlich auch in die Datenbank zu importieren.

    Hallo,

    um was für eine DB geht es eigentlich?

    Ansonsten versuchs mal damit:

    Sub Dateiexport()

    'falls die Zieldatei noch nicht vorhanden ist,

    'wird sie erstellt

    Dim Datei As String, Text As String

    Dim Zeile As Long

    Dim zeigen

    On Error GoTo Hell

    'Zieldatei festlegen

    Datei = ThisWorkbook.Path & "\test.xml"

    Open Datei For Output As #1 'Zieldatei öffnen

    'reinschreiben

    Print #1, "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?> "

    Print #1, "<daten>"

    Print #1, "<titel>Bankleitzahlen</titel>"

    'mit Schleife die ersten 20 Zeilen der Tabelle reinschreiben

    'Spalte A = Blz, Spalte B = Institut

    For Zeile = 1 To 20

    Print #1, "<datensatz>"

    Print #1, "<blz>" & Cells(Zeile, 1) & "</blz>"

    Print #1, "<institut>" & Cells(Zeile, 2) & "</institut>"

    Print #1, "</datensatz>"

    Next Zeile

    Print #1, "</daten>"

    Close #1 'Zieldatei schließen

    zeigen = Shell(Environ("windir") & "\notepad.exe " & Datei, 1)

    Exit Sub

    Hell:

    Close #1

    MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _

    & "Beschreibung: " & Err.Description _

    , vbCritical, "Fehler"

    End Sub

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...