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, 10444 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
Excel VBA vbyesno
gelöst Frage von Florian86Microsoft Office2 Kommentare

Hallo, ich habe folgenden Code Sub AbgerundetesRechteck1_Klicken() Dim wksOrig As Worksheet Dim wksStore As Worksheet Dim lngLastRow As Long ...

VB for Applications
Excel VBA Code
gelöst Frage von specialuserVB for Applications2 Kommentare

Hallo zusammen, Hab hier einen Button in einer Excel mit Makros erstellt. Der Button hat die Funktion aus der ...

Microsoft Office
Excel VBA - PDF
Frage von SabineTMicrosoft Office3 Kommentare

Hallo Zusammen, ich habe ein pdf, über welches ich bereits die OCR Texterkennung laufen lassen habe. Jetzt möchte ich ...

VB for Applications
Excel VBA Programmierung
gelöst Frage von specialuserVB for Applications7 Kommentare

Hallo zusammen, ich suche auf diesem Weg Hilfe bei einer VBA Programmierung. Und zwar geht es darum 2 Dropdownlisten ...

Neue Wissensbeiträge
Internet

CDU Propaganda: Urheberschutz im Internet - Ende des digitalen Wild-West

Information von Frank vor 19 StundenInternet3 Kommentare

Hallo Administratoren, aus einem Kommentar heraus habe ich folgenden Beiträge von Herr Sven Schulze und Axel Voss (beide CDU ...

Router & Routing

Zyxel VMG 1312 B30A - Firmwareupdate nur im "privaten" Firefox Modus möglich

Tipp von the-buccaneer vor 1 TagRouter & Routing2 Kommentare

Hatte hier ein Zyxel 1312 das ums verrecken kein Firmwareupdate durchführen wollte. Datei ist auswählbar, dann kommt der Fortschrittskreisel ...

Windows 7

Windows 7 u. Server 2008 (R2) SHA-2-Update kommt am 12. März 2019

Information von kgborn vor 2 TagenWindows 75 Kommentare

Kleine Info für die Admins der oben genannten Maschinen. Ab Juli 2019 werden Updates von Microsoft nur noch mit ...

Firewall
PfSense 2.5.0 benötigt doch kein AES-NI
Information von ChriBo vor 4 TagenFirewall2 Kommentare

Hallo, Wie sich einige hier erinnern werden hat Jim Thompson in diesem Aritkel beschrieben, daß ab Version 2.5.0 ein ...

Heiß diskutierte Inhalte
Hardware
PC im Selbstbau, Workstation, mittelklasse Gaming
gelöst Frage von MrRobot1997Hardware21 Kommentare

Hallöchen Leute, ich bin seit einigen Jahren leider nicht mehr wirklich im Bild, wenn es um die Hardware und ...

Datenbanken
PHP Fatal error: Uncaught Error: Call to undefined function oci connect
Frage von PlanitecXDatenbanken20 Kommentare

Hallo Zusammen, ich sitze seit Tagen am Problem das ich keine PHP Anwendung mit Anbindung zu Oracle zum laufen ...

Hardware
Welchen Shop Großhandel für EDV?
Frage von opc123Hardware17 Kommentare

Hallo, ich finde kein passendes Thema. Ich suche einen Großhändler für alltägliche EDV Ausstattung: Ethernet Kabel, Switche, Stromverteiler, Handy´s, ...

Windows Server
User auf Server Install-Rechte geben
gelöst Frage von killtecWindows Server17 Kommentare

Hi, ich möchte auf mehreren W2016 Servern einem bestimmten User das Recht zum Installieren von Programmen geben. Er soll ...