Top-Themen

Aktuelle Themen (A bis Z)

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 - Alle Worksheets durchlaufen und Werte in Zellen schreiben

Frage Entwicklung VB for Applications

Mitglied: Forsberg21

Forsberg21 (Level 1) - Jetzt verbinden

12.07.2007, aktualisiert 11:10 Uhr, 32240 Aufrufe, 2 Kommentare

Jedes Worksheet des Excel-Sheets abarbeiten, jeweils die letzte Zeile auslesen und gefundene Werte in statische Felder schreiben

Hallo ihr Profis,

ich habe ein Problem mit einem Excel-Makro. Muss dazu sagen, dass mein letztes Mal VBA ~ 6 Jahre zurückliegt. Bin also total eingerostet und muss mich jetzt auch an euch wenden

Was will ich machen?
Ich habe eine Excel-Datei mit mehreren Worksheets (5). Ein Makro soll beim Öffnen der Datei durch alle Worksheets laufen, jeweils die letzte Zeile auslesen, aus drei Spalten der letzten Zeile die Werte auslesen, und im selben Worksheet an anderer Stelle einfügen.

Was ist mein Problem?
Nun, die Funktion habe ich schon Mal "auto_open" genannt, dass sie beim Öffnen auch automatisch ausgeführt wird. Meine Schleife läuft durch alle Worksheets (ich habe als Debug eingebaut, dass er mir den Namen des Worksheets in einer MsgBox anzeigt), die Änderungen werden aber immer nur im 1. Worksheet durchgeführt. Ich habe meinen Code wirklich mehrmals durchgesehen jetzt, finde aber nicht, wo hier statisch auf immer das 1. Worksheet verwiesen wird ...

01.
Sub auto_open() 
02.
 
03.
  'Variablendeklaration 
04.
  Dim objWks    As Worksheet 
05.
  Dim nCol      As Integer 
06.
  Dim nLastRow  As Long 
07.
  Dim nCounter  As Integer 
08.
  Dim nNumWS    As Integer 
09.
     
10.
  'Anzahl der Worksheets auslesen 
11.
  nNumWS = ActiveWorkbook.Worksheets.Count 
12.
     
13.
  For nCounter = 1 To nNumWS 
14.
     
15.
  'Das Worksheet aufgreifen und als Objekt definieren 
16.
  Set objWks = ActiveWorkbook.Worksheets(nCounter) 
17.
     
18.
  'Spalte A 
19.
  nCol = 1 
20.
  With objWks 
21.
      If Application.WorksheetFunction.CountA( _ 
22.
              .Columns(nCol).EntireColumn) > 0 Then 
23.
 
24.
          If Len(.Cells(.Rows.Count, nCol).Value) = 0 Then 
25.
              nLastRow = .Cells(.Rows.Count, nCol).End(xlUp).Row 
26.
          Else 
27.
              nLastRow = .Rows.Count 
28.
          End If 
29.
          'Variabel abgegriffene Werte in die statischen Felder schreiben 
30.
          objWks.Cells(2, 7).Value = objWks.Cells(nLastRow, nCol) 
31.
          
32.
      End If 
33.
  End With 
34.
   
35.
  'Spalte B 
36.
  nCol = 2 
37.
  With objWks 
38.
      If Application.WorksheetFunction.CountA( _ 
39.
              .Columns(nCol).EntireColumn) > 0 Then 
40.
 
41.
          If Len(.Cells(.Rows.Count, nCol).Value) = 0 Then 
42.
              nLastRow = .Cells(.Rows.Count, nCol).End(xlUp).Row 
43.
          Else 
44.
              nLastRow = .Rows.Count 
45.
          End If 
46.
          'Variabel abgegriffene Werte in die statischen Felder schreiben 
47.
          objWks.Cells(3, 7).Value = objWks.Cells(nLastRow, nCol) 
48.
          
49.
      End If 
50.
  End With 
51.
   
52.
  'Spalte F 
53.
  nCol = 6 
54.
  With objWks 
55.
      If Application.WorksheetFunction.CountA( _ 
56.
              .Columns(nCol).EntireColumn) > 0 Then 
57.
 
58.
          If Len(.Cells(.Rows.Count, nCol).Value) = 0 Then 
59.
              nLastRow = .Cells(.Rows.Count, nCol).End(xlUp).Row 
60.
          Else 
61.
              nLastRow = .Rows.Count 
62.
          End If 
63.
          'Variabel abgegriffene Werte in die statischen Felder schreiben 
64.
          objWks.Cells(4, 7).Value = objWks.Cells(nLastRow, nCol) 
65.
          
66.
      End If 
67.
  End With 
68.
     
69.
 'Debugfunktion (Anzeigen des Worksheet-Namens 
70.
 MsgBox ActiveWorkbook.Worksheets(nCounter).Name 
71.
   Set objWks = Nothing 
72.
   Next nCounter 
73.
     
74.
'//EOF 
75.
End Sub
Ich wäre um jede Hilfe dankbar!

brgds
Mitglied: bastla
12.07.2007 um 11:06 Uhr
Hallo Forsberg21!

Die schlechte Nachricht vorweg: Dein Code funktioniert bei mir ...

Zwar könnte man das Ganze wie folgt etwas straffen, aber das ist auch nur Kosmetik:

01.
Option Explicit 
02.
 
03.
'Variablendeklaration 
04.
Dim objWks    As Worksheet 
05.
Dim nLastRow  As Long 
06.
Dim nCounter  As Integer 
07.
Dim nNumWS    As Integer 
08.
     
09.
Sub auto_open() 
10.
 
11.
'Anzahl der Worksheets auslesen 
12.
nNumWS = ActiveWorkbook.Worksheets.Count 
13.
     
14.
For nCounter = 1 To nNumWS 
15.
     
16.
    'Das Worksheet aufgreifen und als Objekt definieren 
17.
    Set objWks = ActiveWorkbook.Worksheets(nCounter) 
18.
     
19.
    'Spalte A -> Zeile 2, Spalte G 
20.
    Call Eintragen(1, 2, 7) 
21.
    'Spalte B -> Zeile 3, Spalte G 
22.
    Call Eintragen(2, 3, 7) 
23.
    'Spalte F -> Zeile 4, Spalte G 
24.
    Call Eintragen(6, 4, 7) 
25.
     
26.
    Set objWks = Nothing 
27.
Next 'nCounter 
28.
     
29.
End Sub 
30.
 
31.
Sub Eintragen(nCol As Integer, nTRow As Integer, nTCol As Integer) 
32.
With objWks 
33.
      If Application.WorksheetFunction.CountA( _ 
34.
              .Columns(nCol).EntireColumn) > 0 Then 
35.
 
36.
          If Len(.Cells(.Rows.Count, nCol).Value) = 0 Then 
37.
              nLastRow = .Cells(.Rows.Count, nCol).End(xlUp).Row 
38.
          Else 
39.
              nLastRow = .Rows.Count 
40.
          End If 
41.
          'Variabel abgegriffene Werte in die statischen Felder schreiben 
42.
          objWks.Cells(nTRow, nTCol).Value = objWks.Cells(nLastRow, nCol) 
43.
          
44.
      End If 
45.
  End With 
46.
End Sub
Mir fällt leider keine vernünftige Erklärung ein, warum nur die erste Tabelle bearbeitet werden sollte.

Grüße
bastla
Bitte warten ..
Mitglied: Forsberg21
12.07.2007 um 11:10 Uhr
Hallo!

Es war die pure Dummheit. Das Makro funktionierte die ganze Zeit einwandfrei, ich hatte nur die Ausrichtung der Felder so gehabt, dass ich es nicht gleich gesehen habe.

Trotzdem Danke für die Hilfe.

Problem gelöst, Thread kann geschlossen werden.

brgds
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Excel Tabellenblattname in Zelle schreiben
gelöst Frage von abuelitoMicrosoft Office8 Kommentare

Hallo an Alle, ich habe folgendes Problem: Ich habe eine Exceltabelle immer mit unterschiedlichen Zeilen und möchte gerne den ...

Microsoft Office
Excel VBA Letzte Zelle Suchen dann rechnen und Wert in Zelle Übertragen
gelöst Frage von Addi089Microsoft Office3 Kommentare

Hallo Admin Forum, jetzt muss ich leider auch mal eine Frage Posten sonst lese ich immer nur und habe ...

Microsoft Office
Excel VBA Wert hochzählen
gelöst Frage von Florian86Microsoft Office1 Kommentar

Hallo, ich habe im VBA Code folgendes stehen Range("E10") = Range("E10") + 1 Jetzt ist der Wert bei schon ...

VB for Applications
Schreiben in andere Excel-Datei macht Worksheet unsichtbar
gelöst Frage von Albatros91VB for Applications5 Kommentare

Guten Tag! Ich möchte von einem Makro aus in eine andere Excel-Datei schreiben. Nach dem schreiben und speichern der ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 106 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless8 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Router & Routing
Fritzbox Gastnetz - exposed Host - zur Sophos IPTV
Frage von medikopterRouter & Routing7 Kommentare

Hallo zusammen, ich habe eine Frage bezüglich des Fritz box Gastzugangs an einer Sophos UTM Home. An liebsten wäre ...