Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Frage Entwicklung VB for Applications

Mitglied: Paescu

Paescu (Level 1) - Jetzt verbinden

23.08.2006, aktualisiert 30.08.2006, 9907 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
gelöst Excel-Formel oder VBA (7)

Frage von nicki01 zum Thema Microsoft Office ...

VB for Applications
gelöst VBA Excel Skript - Hilfe! (1)

Frage von 133202 zum Thema VB for Applications ...

VB for Applications
SNMP Abfrage in EXCEL über VBA (7)

Frage von SebastianL zum Thema VB for Applications ...

Microsoft Office
gelöst Excel 2010 mit VBA sortieren ? (4)

Frage von dressa zum Thema Microsoft Office ...

Neue Wissensbeiträge
Sicherheit

Millionen Euro in den Sand gesetzt?

(2)

Information von transocean zum Thema Sicherheit ...

Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Erkennung und -Abwehr

Ccleaner-Angriff war nur auf große Unternehmen gemünzt

(10)

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Heiß diskutierte Inhalte
Humor (lol)
gelöst Freidach Beitrag (40)

Frage von Penny.Cilin zum Thema Humor (lol) ...

Firewall
gelöst Firewall Firmeneimsatz (22)

Frage von wiesi200 zum Thema Firewall ...

Multimedia & Zubehör
gelöst 8 GB USB Stick besitzt nur noch 4 MB Kapazität (13)

Frage von Gwahlers zum Thema Multimedia & Zubehör ...