Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBA Excel Skript - Hilfe!

Frage Entwicklung VB for Applications

Mitglied: Compu2017

Compu2017 (Level 1) - Jetzt verbinden

19.05.2017, aktualisiert 21:03 Uhr, 242 Aufrufe, 1 Kommentar

Hallo Ihr,

leider habe Schwierigkeiten bei einem alten VBA Skript. Ich habe es mal für Excel in der Schule erstellt, vor Jahren. Daher weiß ich leider nicht mehr genau, was es genau macht. Kann mir wer helfen,und sagen,was es macht?

01.
 
02.
Public Sub Ausführen(control As IRibbonControl) 
03.
Dim variableI As Long 
04.
Dim variableX As Long 
05.
Dim variableN As Long 
06.
Dim i As Long 
07.
Dim x As Long 
08.
Dim varI As Long 
09.
Dim varX As Long 
10.
ActiveSheet.Name = "Adressen067" 
11.
 
12.
Dim wb As Workbook 
13.
Set wb = Workbooks.Add 
14.
wb.SaveAs Filename:="C:\Test\NeueAdressen.xlsx" 
15.
'Workbooks("NeueAdressen3.xlsx").Close 
16.
Workbooks("adress.xls").Activate 
17.
variableX = Cells(Rows.Count, 23).End(xlUp).Row 
18.
variableN = 2 
19.
'Workbooks.Open ("NeueAdressen3.xlsx") 
20.
Rows(1).Copy Destination:=Workbooks("NeueAdressen.xlsx").Worksheets("Tabelle1").Rows(1) 
21.
For variableI = 2 To variableX 
22.
     
23.
        If Cells(variableI, 23) <> "" Then 
24.
             
25.
            Rows(variableI).Cut Destination:=Workbooks("NeueAdressen.xlsx").Worksheets("Tabelle1").Rows(variableN) 
26.
            variableN = variableN + 1 
27.
         
28.
        End If 
29.
Next variableI 
30.
Workbooks("NeueAdressen.xlsx").Activate 
31.
Dim variI 
32.
Dim variX 
33.
Cells(1, 23).ClearContents 
34.
variX = Cells(Rows.Count, 23).End(xlUp).Row 
35.
For variI = 2 To variX 
36.
    If Cells(variI, 22) <> "" Then 
37.
        Cells(variI, 22) = Cells(variI, 22) & " " & Cells(variI, 23) 
38.
        Cells(variI, 23).ClearContents 
39.
        Range(Cells(variI, 22), Cells(variI, 23)).Merge 
40.
    End If 
41.
Next variI 
42.
Columns(22).AutoFit 
43.
Dim vI 
44.
Dim vX 
45.
vX = Cells(Rows.Count, 31).End(xlUp).Row 
46.
Range("AF1") = "Neu?" 
47.
For vI = 2 To vX 
48.
    If Cells(vI, 32) = "" Then 
49.
        Range("AF" & vI) = "1" 
50.
    End If 
51.
Next vI 
52.
Workbooks("NeueAdressen.xlsx").Close 
53.
'End With 
54.
x = Cells(Rows.Count, 31).End(xlUp).Row 
55.
For i = x To 2 Step -1 
56.
     
57.
        If Cells(i, 31) = "" Then 
58.
  
59.
            Rows(i).Delete Shift:=xlUp 
60.
    
61.
        End If 
62.
     
63.
Next i 
64.
'ThisWorkbook.Sheet("adress01").Select 
65.
varX = Cells(Rows.Count, 31).End(xlUp).Row 
66.
Range("AF1") = "Gesperrt09" 
67.
For varI = 2 To varX 
68.
    If Cells(varI, 32) = "" Then 
69.
        Range("AF" & varI) = "1" 
70.
    End If 
71.
Next varI 
72.
End Sub 
73.
 
Gruß
Mitglied: 132895
LÖSUNG 20.05.2017, aktualisiert um 09:54 Uhr
Tja, hätte man seinen Code kommentiert ;-P...
Zitat von Compu2017:
Public Sub Ausführen(control As IRibbonControl)
Dim variableI As Long
Dim variableX As Long
Dim variableN As Long
Dim i As Long
Dim x As Long
Dim varI As Long
Dim varX As Long
Variablen definieren, hoffentlich verstehst du das wenigstens noch .

ActiveSheet.Name = "Adressen067"
Benennt das aktive Sheet um.

Dim wb As Workbook
Set wb = Workbooks.Add
wb.SaveAs Filename:="C:\Test\NeueAdressen.xlsx"
Legt eine neue Arbeitsmappe an und speichert sie.

Workbooks("adress.xls").Activate
Aktiviert das Sheet mit dem Namen adress.xls.
variableX = Cells(Rows.Count, 23).End(xlUp).Row
Ermittelt die letzte belegte Zelle in Spalte 23 und speichert die Zeilennummer in der Variablen "variableX"
variableN = 2
Rows(1).Copy Destination:=Workbooks("NeueAdressen.xlsx").Worksheets("Tabelle1").Rows(1)
Kopiert die ganze erste Zeile des aktiven Sheets in das Workbook NeueAdressen.xlsx in Tabelle1.
For variableI = 2 To variableX

If Cells(variableI, 23) <> "" Then

Rows(variableI).Cut Destination:=Workbooks("NeueAdressen.xlsx").Worksheets("Tabelle1").Rows(variableN)
variableN = variableN + 1

End If
Next variableI
Durchläuft alle Zellen von Zeile 2 bis zu ermittelten letzten belegten Zelle in Spalte 23 und prüft ob die Zelle nicht leer ist. Wenn ja dann kopiert es diese ganze Zeile ebenfalls in das Workbook NeueAdressen.xlsx untereinander.
Workbooks("NeueAdressen.xlsx").Activate
Aktiviert das angegebene Workbook
Dim variI
Dim variX
Cells(1, 23).ClearContents
Löscht den Inhalt von Zelle 1 in Spalte 23.
variX = Cells(Rows.Count, 23).End(xlUp).Row
Ermittelt erneut die letzte belegte Zelle in Spalte 23.
For variI = 2 To variX
If Cells(variI, 22) <> "" Then
Cells(variI, 22) = Cells(variI, 22) & " " & Cells(variI, 23)
Cells(variI, 23).ClearContents
Range(Cells(variI, 22), Cells(variI, 23)).Merge
End If
Next variI
Durchläuft erneut mit der Schleife alle Zellen, prüft ob Spalte 22 nicht leer ist, und wenn ja kombinier es den Inhalt von Spalte 22 und 23 und setzt den Inhalt in Spalte 22, löscht dann den Inhalt von Spalte 23, und macht die Spalten 22 und 23 zu einer einzigen Zelle.
Columns(22).AutoFit
Passt die Spaltenbreite der Spalte 22 automatisch an die Inhalte an.
Dim vI
Dim vX
vX = Cells(Rows.Count, 31).End(xlUp).Row
Wieder Ermittlungen der letzten Zelle in Spalte 31
Range("AF1") = "Neu?"
For vI = 2 To vX
If Cells(vI, 32) = "" Then
Range("AF" & vI) = "1"
End If
Next vI
Durchlaufe wieder mit Schleife alle Zellen von 2 bis Ende Spalte 31, wenn dabei Spalte 32 leer ist setze den Inhalt von AFx (x = aktuelle Zeile der Schleife) auf 1.
Workbooks("NeueAdressen.xlsx").Close
Schließe das Workbook.
x = Cells(Rows.Count, 31).End(xlUp).Row
For i = x To 2 Step -1

If Cells(i, 31) = "" Then

Rows(i).Delete Shift:=xlUp

End If

Next i
Durchlaufe mit Schleife alle Zellen von Ende Spalte 31 bis Zeile 2, diesmal rückwärts, wenn dabei Spalte 31 leer ist lösche die ganze Zeile.

varX = Cells(Rows.Count, 31).End(xlUp).Row
Range("AF1") = "Gesperrt09"
Setze Inhalt von AF1 auf "Gesperrt09"
For varI = 2 To varX
If Cells(varI, 32) = "" Then
Range("AF" & varI) = "1"
End If
Next varI
End Sub
Durchlaufe wieder mit Schleife (wird langsam eintönig) alle Zellen von Zeile 2 bis Ende Spalte 31, wenn dabei Spalte 32 leer ist setze den Inhalt von AFx (x = aktuelle Zeile der Schleife) auf 1.

Habe fertig, nu bist du am Zug deine VBA Kenntnisse wieder auf den aktuellen Stand zu bringen.

Gruß
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VBA Excel Dateien zusammenfassen (3)

Frage von cberndt zum Thema VB for Applications ...

Microsoft Office
gelöst Verschieben von Zellinformation in andere Spalte (per VBA) excel 2010 (5)

Frage von thomas1972 zum Thema Microsoft Office ...

VB for Applications
gelöst EXCEL VBA Zellen verbinden. MERGE (6)

Frage von Aximand zum Thema VB for Applications ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Server-Hardware
gelöst Empfehlung KVM over IP Switch (8)

Frage von Androxin zum Thema Server-Hardware ...

Ubuntu
Nextcloud 12 Antivirus App for Files (8)

Frage von horstvogel zum Thema Ubuntu ...