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

VBA - Tabellenname im Excel übergeben, dann damit weiterarbeiten

Mitglied: Paescu

Paescu (Level 1) - Jetzt verbinden

23.08.2006, aktualisiert 30.08.2006, 10295 Aufrufe, 10 Kommentare

Guten Morgen miteinander

Ich stehe wieder einmal an beim VBA programmieren...
Und zwar sollte ich folgendes machen: Da ich jetzt ziemlich langen Code habe, der recht unübersichtlich ist, will ich einen Vorgang, der vier Mal ausgeführt wird und immer separat in einer Funktion ist, in eine einzige solche packen. Dazu muss ich natürlich Variabeln übergeben, dass das geht. Unter Anderem auch die Tabelle, in der der Code ausgeführt werden soll, also zum Beispiel "Tabelle2" damit ich in der Funktion dann "Tabelle2.Activate" oder so erhalte, aber das Tabelle2 muss Variabel sein. Ich habe es schon mit einigen Datentypen probiert, es ging auch ein paar Mal, aber dan blieb es hier hängen: "If Tabelle2.Cells(zahl, 1) = "" Then ..."
Was soll das? Ich weiss echt nicht mehr, was ich tun soll, möchte diesen Code endlich übersichtlicher und wenn dies in einer Funktion ist, muss ich nicht an vier Stellen was ändern, sondern nur an einer (weniger Arbeitsaufwand).

Hoffe ihr versteht mich

Gruss
Pascal
Mitglied: Stefan764
24.08.2006 um 19:08 Uhr
Den Namen der Zieltabelle als Parameter zu übergeben geht z.B. so:

01.
Public Sub test(TabStr As String) 
02.
 
03.
Dim TabObj As Worksheet 
04.
Set TabObj = Application.Worksheets(TabStr) 
05.
 
06.
TabObj.Cells(1, 1) = "Hallo, ich bin " & TabStr 
07.
 
08.
Set TabObj = Nothing 
09.
 
10.
End Sub 
11.
 
12.
 
13.
 
14.
Public Sub t1() 
15.
 
16.
test ("Tabelle1") 
17.
test ("Tabelle2") 
18.
test ("Tabelle3") 
19.
 
20.
End Sub
Bitte warten ..
Mitglied: Paescu
24.08.2006 um 20:53 Uhr
Danke, sieht recht logisch aus, werde es gleich am Montag testen, morgen habe ich (leider) Schule, da kann ich nicht an diesem Auftrag weiterarbeiten...

Pascal
Bitte warten ..
Mitglied: Paescu
28.08.2006 um 09:31 Uhr
@Stefan764
Hat super funktioniert, danke!

Nun aber noch ne andere Frage... Weisst du auch, wie man dasselbe mit einem global deklarierten Array macht? Also, so dass ich nur den Namen übergebe und den Rest in der Funktion ist, damit ich mehrere Array nutzen kann in einer Funktion (pro Aufruf ein Array)... Hoffe du kommst draus

Pascal
Bitte warten ..
Mitglied: Stefan764
28.08.2006 um 15:54 Uhr
Tut mir leid, aber ich verstehe nicht ganz, was du meinst.

Was willst du in den globalen Arrays speichern ? Die Tab-Namen oder Was ?
Bitte warten ..
Mitglied: Paescu
28.08.2006 um 19:37 Uhr
Ne nicht die Tabellennamen, die habe ich nur übergeben, dass die Funktion weiss, in welcher Tabelle was kopiert werden muss. Und da kommt das Array ins Spiel, von jeder Tabelle werden Einträge in Arrays gespeichert (insgesamt 4 Tabellen -> 4 Arrays) und wenn ich zum Beispiel Tabelle2 übergebe, muss ich die Daten in das arrayHardware speichern, wenn ich aber Tabelle3 übergebe, muss arraySoftware genommen werden... die Arrays sind global deklariert, weil sie später noch in einer anderen Funktion gebraucht werden...
Hoffe, du verstehst mich nun besser und wenn nicht, einfach fragen

Pascal
Bitte warten ..
Mitglied: Stefan764
28.08.2006 um 21:20 Uhr
Wie währe es mit mehrdimensionalen Arrays ?

01.
Dim Alles(0 To 3, 0 To 100) As String 
02.
 
03.
Alles(0,0) = "Hardware1" 
04.
Alles(0,1) = "Hardware2" 
05.
 
06.
Alles(1,0) = "Software1" 
07.
Alles(1,1) = "Software2" 
08.
 
09.
Alles(2,0) = "Firmware1" 
10.
Alles(2,1) = "Firmware2" 
11.
 
12.
Alles(3,0) = "Freeware1" 
13.
Alles(3,1) = "Freeware2" 
14.
....
Diese Methode ist leider sehr unflexiebel, was die Größe des Arrays angeht.

In anderen Sprachen würde ich dynamische Objekte und Zeiger verwenden.
z.B. TStringList und TList in Delphi

Mit VBA geht das vielleicht auch - aber ich weiß nicht, wie.
Bitte warten ..
Mitglied: Paescu
28.08.2006 um 21:49 Uhr
Ne das ist nicht ne gute Lösung, denn ich weiss nie, wieviele Datensätze es in dem Array werden, also, zum Beispiel könnte es so aussehen:

ArrayHardware(0,0) = Anzahl
ArrayHardware(1,0) = Artikel-Nr.
ArrayHardware(2,0) = Option

Und das bei allen vier Tabellen so...
Dann kann es schlussendlich so aussehen:

ArrayHardware(0,21) = "5"
ArrayHardware(1,21) = "D5GW3"
ArrayHardware(2,21) = "53S"

Also geht deine Methode irgendwie nicht...
Könnte es unter Umständen schon mit einem einzigen Array machen, was aber ziemlich aufwendig ist... Aber ich könnte es morgen einmal probieren, da mir sowieso nichts anderes übrig bleiben wird...

Pascal
Bitte warten ..
Mitglied: Stefan764
28.08.2006 um 22:24 Uhr
Vielleicht ist es das, was du suchst :

01.
Dim A1(0 To 10, 0 To 5) As String 
02.
Dim A2(0 To 2, 0 To 2, 0 To 2) As String 
03.
Dim A3(0 To 5, 0 To 8) As String 
04.
 
05.
Dim Alles(0 To 2) As Variant 
06.
 
07.
Alles(0) = A1 
08.
Alles(1) = A2 
09.
Alles(2) = A3 
10.
 
11.
Alles(0)(0, 0) = "Hardware1" 
12.
Alles(0)(1, 0) = "Hardware2" 
13.
Alles(0)(2, 0) = "Hardware3" 
14.
Alles(0)(3, 0) = "Hardware4" 
15.
Alles(0)(4, 0) = "Hardware5" 
16.
Alles(0)(5, 0) = "Hardware6" 
17.
 
18.
Alles(1)(0, 0, 0) = "Software1" 
19.
Alles(1)(1, 0, 0) = "Software2" 
20.
 
21.
Alles(2)(0, 0) = "Freeware1" 
22.
Alles(2)(1, 0) = "Freeware2" 
23.
Alles(2)(2, 0) = "Freeware3" 
24.
Alles(2)(3, 0) = "Freeware4" 
25.
Alles(2)(4, 0) = "Freeware5" 
26.
 
27.
 
28.
MsgBox (Alles(0)(0, 0)) 
29.
MsgBox (Alles(1)(0, 0, 0)) 
30.
MsgBox (Alles(2)(0, 0))
<klugscheiß>

Solche Programmtechniken haben ein hohes Fehlerrisiko !
Man gerät sehr schnell aus den Arraygrenzen heraus.

</klugscheiß>
Bitte warten ..
Mitglied: Paescu
29.08.2006 um 08:27 Uhr
Wusste ich gar nicht, dass sowas geht... Aber wäre auch ne Lösung... Ich muss schauen, welche dass ich nehme, werde es dann hier bekannt geben...

Nochmal danke an alle, die sich Mühe gegeben haben!

Pascal
Bitte warten ..
Mitglied: Paescu
30.08.2006 um 16:01 Uhr
Habe nun ein einziges Array genommen, ist leicht und funktioniert so wie es soll!

Somit habe ich diesen Schritt nun (endlich) fertig =)

Ich denke, in den nächsten Tagen werden wieder ein paar fragen von mir auftauchen

Gruss Pascal
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

VBA - Zellen anhand des Zellinhaltes und des Tabellennamen kopieren

gelöst Frage von Noah15Microsoft Office2 Kommentare

Guten Tag, folgendes Problem stellt sich mir und ich hoffe, dass sich vor den Festtagen noch jemand findet, der ...

Datenbanken

Primärschlüssel per VBA übergeben

gelöst Frage von thomas1972Datenbanken3 Kommentare

Hallo, ich versuche eine SQL Tabelle per VBa zu verbinden, soweit so gut, nur bekomme ich es nicht hin ...

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 ...

Microsoft Office

Unterordner durchsuchen Excel VBA

Frage von schwalbepilotMicrosoft Office1 Kommentar

Hi, ich habe mir ein Makro gebastelt, mit dem ich Daten aus mehreren Word Tabellen auslesen kann. Das Makro ...

Neue Wissensbeiträge
Utilities
Teamviewer 14 Verbindungsprobleme mit Proxy
Tipp von PeterleB vor 1 TagUtilities

Nach dem Umstieg von Version 13 auf 14 wollte sich TV nicht mehr mit dem Netz verbinden, ignorierte offenbar ...

Administrator.de Feedback
Unsere Datenbank wurde umgestellt
Information von Frank vor 1 TagAdministrator.de Feedback5 Kommentare

Hallo User, ich habe in der Nacht unsere Datenbank umgestellt. D.h. neue Version (MySQL 8) und andere Örtlichkeit. Sollte ...

Sonstige Systeme
Es war einmal ein BeOS - Wer erinnert sich noch?
Information von BassFishFox vor 3 TagenSonstige Systeme7 Kommentare

Hallo, Bin gerade ueber Haiku gestolpert, von dessen Existenz als "Nachfolger des BeOS" ich wusste nur mich nie wirklich ...

Datenschutz

Microsoft und DSGVO - ob das wohl jemals klappt (Probleme beim Datenabfluss für Office Pro Plus)?

Tipp von VGem-e vor 3 TagenDatenschutz5 Kommentare

Servus Kollegen, siehe Aber wer setzt schon MS Office Pro Plus ein? Wie dann der Stand beim "normalen" MS ...

Heiß diskutierte Inhalte
Windows 10
Programm unter Windows 10 automatisch mit administrativen Rechten starten
Frage von GrafmulderWindows 1019 Kommentare

Hallo zusammen! Zur Situation: Ich benutze Windows 10 Pro für Workstations (Build 1803) mit zwei Konten. Einem Administratorkonto und ...

Vmware
Gebrauchten ESXi- Server verkaufen: Festplatten DSGVO-konform löschen?
Frage von l.scheperVmware16 Kommentare

Hallo, wir möchten einen gebrauchten FUJITSU Server verkaufen. Auf dieser Maschine ist noch ein installiertes ESXi 5.1 und ne ...

LAN, WAN, Wireless
Empfehlung Powerline Adapter
Frage von AgilolfingerLAN, WAN, Wireless16 Kommentare

Hallo Zusammen, ich brauche eine Empfehlung von euch. Ich möchte in einem privaten Haushalt eine Powerline Lösung einrichten. Allerdings ...

Router & Routing
Dediziertes ISP -Routing
gelöst Frage von niLuxxRouter & Routing10 Kommentare

Liebe Community, Ich hätte eine kurze Frage an euch. Durch verschiedene Umstände kann es nun sein, dass sich zwei ...