Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  VBA - Allgemein

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  VBA - Allgemein (1383 mal gelesen)
DegraA
Mitglied
staatl. gepr. Techniker - Maschinenbau


Sehen Sie sich das Profil von DegraA an!   Senden Sie eine Private Message an DegraA  Schreiben Sie einen Gästebucheintrag für DegraA

Beiträge: 177
Registriert: 29.03.2005

Dell Latitude E5500
Core2Duo 2,53GHz
3,45 GB RAM
Win XP Prof. SP3
Office 2003 Prof.
Catia V4.2.4
Catia V5R19
i break together

erstellt am: 03. Jul. 2008 15:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Leudle,

habe schon die Suche benutzt aber bin nicht sehr weit gekommen... 

ich habe keinerlei Erfahrungen, geschweige denn Kenntnisse von und in VBA.
Aber ich möchte trotzdem wissen was da gerade passiert.
kann ir das jemand in einfachen Sätzen erklären ? 

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Exit Sub
    c = Target.Column
    r = Target.Row
     
    If r = 136 Or r = 278 Then
        If (c - 5) Mod 8 = 2 Then Cells(r - 98, c + 5).Select
       
        Exit Sub
    End If
   
    If (c - 4) Mod 8 = 2 And c <> 2 Then Cells(r + 1, c - 2).Select
 
    nr = r + 3
    Select Case r
        Case 125, 267
            Cells(nr - 1, c).Select
        Case 54, 73, 105, 112, 117, 121, 196, 215, 247, 254, 259, 263
            Cells(nr, c).Select
        Case 92, 234
            Cells(nr + 2, c).Select
        Case 127, 128, 129, 269, 270, 271
            If (c - 5) Mod 8 = 2 Then Cells(r + 1, c - 2).Select
        Case 130, 272
            If (c - 5) Mod 8 = 2 Then Cells(r + 6, c - 1).Select
    End Select
 
End Sub

gr33zz
David

------------------

Am lautesten werden Lehrer, wenn sie "Ruhe!" brüllen.

Lattenrost ist keine Geschlechtskrankheit !!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten-3m
Mitglied
Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)


Sehen Sie sich das Profil von carsten-3m an!   Senden Sie eine Private Message an carsten-3m  Schreiben Sie einen Gästebucheintrag für carsten-3m

Beiträge: 950
Registriert: 08.05.2007

Excel 2010

erstellt am: 03. Jul. 2008 15:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DegraA 10 Unities + Antwort hilfreich

Ohne den Programmcode im Detail verstanden zu haben, ist doch erkennbar was generell passiert: Die Prozedur ermittelt zunächst Zeilen- und Spaltennummer der aktuellen Cursorposition und wählt dann jeweils abhängig von Zeilen- bzw. Spaltennummer bestimmte durch einen Rechengang ermittelte Zellen aus. Aufgerufen wird die Prozedur jeweils bei jeder beliebigen Veränderung der Corsorposition.

------------------
Seit Pro/E Version 1 dabei, auwei...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 03. Jul. 2008 15:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DegraA 10 Unities + Antwort hilfreich

Hallo DegraA,
Du hättest bei der Suche aber was finden sollen, nicht genau Deinen code, aber den Umgang mit solchem.
Außerdem hilft Dir bei sowas eher die F1 als die Forensuche.

Am einfachsten bekommt man einen Überblick, wenn man die VBA Umgebung öffnet (Alt+F11) hast Du ja schon gefunden und dort den code zeilenweise durchläuft.
Das machst Du mit der F8.

Die einzelnen Zeilen werden gelb markiert, Du hast Maushints und siehst (am Besten auf nem 2. Monitor) was im Tabellenblatt passiert.

Du nimmst Dir das LokalFenster, das DirektFenster, die Objektbibliothek (F2) und ganz wichtig: die F1 zur Hand und schaust dort die Schlüsselwörter nach.

Eine Abfrage im DirektFenster (auch DebugFenster genannt) erreichst Du mit ?Ausdruck oder ein eingeschobenes Debug.Print im code.

Deinen (wirklich Deiner?  wo ist die Quellenangabe? mache ich ausnahmsweise, ist ja kein Zauberwerk drin, aber demnächst bitte mit Quelle!) code habe ich mal kommentiert. Wenn Du den jetzt wie oben beschrieben durchgehst, sollte Dir das alles klar werden.

Code:
'Da Deine Variablen NICHT deklariert wurden, habe ich diese (bei mir Standard-Anweisung) auskommentiert
'Option Explicit
'generell sollten Variablen aber deklariert werden, das spart Speicherplatz, was nicht deklariert wird, ist automatisch Variant = 16 bytes


'wenn sich die Auswahl des Blattes ändert, also z.B. von A1 in B1 geklickt wird
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Exit Sub
   
    'setze Variable c = Spalte der Auswahl
    c = Target.Column
  'setze Variable r = Zeile der Auswahl
    r = Target.Row
    'Wenn Zeile = 136 oder 278 dann
    If r = 136 Or r = 278 Then
        'Der Modulo-Operator (oder Rest-Operator) dividiert Operand1 durch Operand2, rundet dabei Fließkommawerte zu ganzen Zahlen und gibt nur den Rest als Ergebnis zurück
        'wenn ganzzahliger Rest von(Spalte-5)/8 = 2 dann selektiere Zellen(Reihe-98, Spalte+5)
        If (c - 5) Mod 8 = 2 Then Cells(r - 98, c + 5).Select
        'verlaß die SubRoutine
        Exit Sub
    'beende die Wenn-Dann-Bedingung (Prüfung Zeile 136 oder 278)
    End If
  'vergleiche vorige ModBedingung UND Spalte ist nicht 2
    If (c - 4) Mod 8 = 2 And c <> 2 Then Cells(r + 1, c - 2).Select
    'Setze Variable nr auf Zeile+3
    nr = r + 3
    'Mehrfachabfrage der Zeile
    Select Case r
        'Wenn Zeile = 125 oder 267
        Case 125, 267
            'selektiere Bereich (Zeile+3-1,Spalte)
            Cells(nr - 1, c).Select
        Case 54, 73, 105, 112, 117, 121, 196, 215, 247, 254, 259, 263
            Cells(nr, c).Select
        Case 92, 234
            Cells(nr + 2, c).Select
        Case 127, 128, 129, 269, 270, 271
            If (c - 5) Mod 8 = 2 Then Cells(r + 1, c - 2).Select
        Case 130, 272
            If (c - 5) Mod 8 = 2 Then Cells(r + 6, c - 1).Select
    'Ende der Mehrfachabfrage
    End Select
'Ende der Sub
End Sub


ich hoffe, es paßt alles, bei Fehlern, bitte Laut geben.

PS: DAS und folgende betrifft Dich also auch, praktisch, brauch ich es nicht nochmal schreiben ;-)

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info     Excel -Suche    RuA-Suche     FAQ-ACAD     Hilfe zu CAD.de 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DegraA
Mitglied
staatl. gepr. Techniker - Maschinenbau


Sehen Sie sich das Profil von DegraA an!   Senden Sie eine Private Message an DegraA  Schreiben Sie einen Gästebucheintrag für DegraA

Beiträge: 177
Registriert: 29.03.2005

Dell Latitude E5500
Core2Duo 2,53GHz
3,45 GB RAM
Win XP Prof. SP3
Office 2003 Prof.
Catia V4.2.4
Catia V5R19
i break together

erstellt am: 08. Jul. 2008 08:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

erstmal einen großen Dank an die ruebe für die ausführliche 1Erläuterung dieses Codes :top:
aber auch an carsten ein dickes Dankeschön für deine einfache und verständliche Erklärung.

Ich muss aber ehrlich zugeben das mich das jetzt doch nicht so weit gebracht hat wie ich mir eigentlich erhofft hatte. 
Egal... vlt. fällt der Groschen ja noch in den nächsten Tagen...

Besitzt jemand von euch ein paar einfache und kleine Tutorials über die ich einen Einstieg in VBA bekomme ??
So mit kleinen Übungsaufgaben / Problemstellungen und auch dazu passende Lösungen ??
das würde mir bestimmt schonmal die ersten Schritte mit VBA erleichtern

Gruß
David

------------------

Am lautesten werden Lehrer, wenn sie "Ruhe!" brüllen.

Lattenrost ist keine Geschlechtskrankheit !!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 08. Jul. 2008 09:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DegraA 10 Unities + Antwort hilfreich

Guten Morgen,
Guck mal HIER vorbei, das ist  einfach erklärt und immer wieder was Neues dabei.
Paulchen ) hat in seiner sig ne Seite verlinkt, dort sind ebenfalls weblinks zum Thema Excel. Hab ich nicht alle durch, sind aber einige bei, die Dich nach vorne bringen könnten.
Herr google kennt bestimmt auch welche.

Und ansonsten hilft mir persönlich nur üben, üben, üben. Am Besten mit einem konkreten Ziel vor Augen. Nicht unbedingt vorhandenen code nehmen, sondern selber versuchen, mit allen damit verbundenen Fehlern, die man so macht. Und nicht hinten anfangen, sondern vorne 

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info     Excel -Suche    RuA-Suche     FAQ-ACAD     Hilfe zu CAD.de 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten-3m
Mitglied
Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)


Sehen Sie sich das Profil von carsten-3m an!   Senden Sie eine Private Message an carsten-3m  Schreiben Sie einen Gästebucheintrag für carsten-3m

Beiträge: 950
Registriert: 08.05.2007

Excel 2010

erstellt am: 08. Jul. 2008 13:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DegraA 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von runkelruebe:
... Und ansonsten hilft mir persönlich nur üben, üben, üben. Am Besten mit einem konkreten Ziel vor Augen. ...
Besser hätte man das nicht sagen können 

/OT
Bissel ab von der eigentlichen Fragestellung mal eine kleine Anekdote, die doch irgendwie zum generellen Thema passt:

Lange vor dem Internet, dort kann man heutzutage zum Thema reichlich Informationen finden, wurde ich durch wen auch immer auf das sogenannte 8-Damen-Problem aufmerksam. Die Aufgabe darin: Man setze 8 Damen auf einem Schachbrett dergestalt, dass keine Dame irgendeine andere Dame bedrohe. Das war damals als rein praktische Aufgabe gedacht, an der ich auch am heimischen Schachbrett reichlich zu tüffteln hatte, bis ich überhaupt eine passende Stellung mit allen 8 Damen zusammen hatte.

Damals allerdings schon sehr fasziniert von Computern und deren Möglichkeiten, logische Probleme durch entsprechende Programmierung lösen zu können, ging ich frisch ans Werk und programmierte einen rekursiven Algorithmus, der sich auf die Suche machte mit folgender Zielsetzung: Wieviele Stellungen gibt es für das 8-Damen-Problem überhaupt. Ich fand reichlich viele und optimierte mein Programm, um Spiegel- und Drehstellungen zu eleminieren. Danach fand ich immer noch - meiner ahnungslosen Meinung nach - reichlich viele, nämlich 12. Heutzutage kann man in vielen Publikationen im Internet nachlesen, dass es mit dem Ergebnis wohl seine Richtigkeit hat.

Fazit der nun viel zu langen Anekdote: Programmieren lernt man wirklich sehr schön an echten Problemstellungen. Und wenn keine berufs- oder aufgabenbedingte vorliegt, na dann macht man sich halt ein "Problem" - und löst es dann 

Über mein selbstspielendes Tetrisprogramm berichte ich dann ein ander mal 
OT/

------------------
Seit Pro/E Version 1 dabei, auwei...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz