Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
268to272
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
268to272
268to272
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VB-Script Nachfrage !

VB-Script Nachfrage !
12.06.2003 16:15:32
Bernd Schneider
Dieser Bertrag bezieht sich auf

https://www.herber.de/forum/messages/267953.html

OK, nun zu meiner Frage

in Diesem Code wird eine Verbindung zwischen 2 Tabellenblättern
hergestellt, wenn ich nun diesen Code so laufen lasse passiert nix auf dem 2ten Blatt.

Der Code im Tabellenblatt1:

Private Sub Worksheet_Change(ByVal Target As Range)
Set rngTarget = Target
colTarget = Target.Column
rowTarget = Target.Row

If Target.Column > 2 Or Target.Column < 3 Then
Call sub1
Exit Sub
End If

If Not Application.Intersect(Target, Range("C5")) Is Nothing Then
Call sub2
Exit Sub
End If
End Sub

und hier der Code im Modul mit der Worksheet angabe:

Option Explicit
Public rngTarget As Range, rowTarget As Integer, colTarget As Integer

Sub sub1()

On Error GoTo fehler
Application.EnableEvents = False
Select Case colTarget
Case 2
Cells(rowTarget, 4) = Cells(rowTarget, 4) + rngTarget
Case 3
Cells(rowTarget, 4) = Cells(rowTarget, 4) - rngTarget
End Select
fehler:
Application.EnableEvents = True
End Sub

Sub sub2()
Dim wks1 As Worksheet
Dim wks2 As Worksheet
Set wks1 = ActiveWorkbook.Worksheets(2)
Set wks2 = ActiveWorkbook.Worksheets(1)
wks1.Range("a1") = wks1.Range("a1") + wks2.Range("C5")
End Sub

!! Muss ich hier vielleicht statt "Worksheet" den namen des Blattes angeben ?
weil ansich soll ein wert von Tabelle1 genommen und zur Summe
auf Tabelle2 addiert werden.

Was habe ich falsch gemacht ?

/// Vielen Dank Euch allen \\\
||| für die Tatkräftige hilfe |||

Bernd Schneider

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: VB-Script Nachfrage !
12.06.2003 16:27:37
Nike

Hi,
wenn du die Subs eines Moduls aus nem Worksheet
rufen möchtest wirst du sie Public definieren müssen...
also im Modul
Public Sub1()
...
end sub

bei worksheets(1)
ist mit 1 die Position des Blattes in der Mappe gemeint,
in diesem Fall, das erste Blatt...

Bye

Nike

geht noch nicht :(
12.06.2003 16:36:32
B. Schneider

das Script ist jetzt so:

Es soll also auf Seite 1 in Zelle C5 eine Zahl eingegeben werden
wenn dies erfolgt soll die eingegebene Zahl mit der vorhandenen
Zahl "A1" auf Seite2 addiert werden . . .
klappt nur nicht :(
Es gibt keinerlei Veränderungen
... any Help ?

Grüße aus dem Noden
Bernd

Anzeige
Re: geht noch nicht :(
12.06.2003 16:57:42
andre

hallo bernd,
hast du auch auf die tabelle 2 geschaut?
das funktioniert. nur eben nicht automatisch, du musst das makro per hand starten.
ansonsten musst du es so in den Code von Tabelle1 schreiben:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim wks1 As Worksheet
Dim wks2 As Worksheet

If Target.Address = "$C$5" Then
  Set wks1 = ActiveWorkbook.Worksheets(1)
  Set wks2 = ActiveWorkbook.Worksheets(2)
  wks2.Range("a1") = wks1.Range("c5") + wks2.Range("a1")
End If

End Sub 

     Code eingefügt mit Syntaxhighlighter 1.16


gruss andre


Anzeige
buhhuuu heul
12.06.2003 17:20:24
B. Schneider

Ok ich habe den Code so in Tabelle1 eingefügt :

Dann ist da noch das Modul für die Steuerung:

Wann immer ich nun in C5 eine Zahl eingebe, ändert sich nicht die Zahl auf Tabelle2 A1 (schnief)

Grüße Bernd


Re: selber schuld
12.06.2003 17:27:00
andre

hallo bernd,
mit deiner bedingung > 2 oder < 3 hast du dir ja was eingebrockt. man kommt also immer da rein. dann kommt 2 zeilen später exit sub, und mein code wird nie durchlaufen.
gruss andre

gute Anregung ;)
12.06.2003 17:40:47
B. Schneider

jetzt gehts mit diesem Code in Tabelle:

und diesem Modul dazu:

Einfach umgedreht und als Sub2 aufgerufen ;)
Vielen Dank für Deine Hilfe
Puh . . .

Bernd Schneider



Anzeige
Re: gute Anregung ;)
12.06.2003 18:15:44
andre

HALLO BERND;
trotzdem nochmal der hinweis auf die zeile
If Target.Column > 2 Or Target.Column < 3 Then
die zeile nützt überhaupt nix.
3 und 4 und 5 und ... und 65536 ... ist größer 2 und 1 und 2 ist kleiner 3 ...
gruss andre

@ andre
12.06.2003 19:09:49
B.Schneider

aber es geht doch, die eingegebene Zahl in
Spalte 2 wird zu Spalte 4 addiert
und die Zahl von Splate 3 wird
von Spalte 4 subtrahiert.

also es Funzt, vorher sah das anders aus und
klappe auch nicht

If Target.Column < 2 Or Target.Column > 3 Then (ging
nur für sich allein, dann nicht mehr)

If Target.Column = 2 Or Target.Column = 3 Then

damit wurde nicht die eingegebene Zahl Addiert/Subtr.
sondern von Spalte 2 eine 2 addiert und von Splate 3 eine 3
abgezogen, unerheblich davon welche Zahl eingetragen wurde.

Deshalb landete ich bei der jetzigen Formel, die klappt !


Eine Frage hätt ich noch, ich habe die Codes erweitert:

und als Modul :

Diese Änderungen brauchte ich weil mehrere Zahlen geprüft werden müssen
kann ich nun das Script Komprimiren weil jedes mal:

wird bei ca 100 Zahlen sicher alles Blockieren (Monsterscript)

THX Bernd




Anzeige
Re: @ andre
12.06.2003 22:35:22
andre

hallo bernd,
im prinzip so:
...
If Target.Address = "$C$6" Then Call sub2(3,4,"$C$6", "d4")
If Target.Address = "$C$8" Then Call sub2(5,6,"$C$8", "d4")
...

Private Function sub2(blatt1 as integer, blatt2 as integer, zelle1 as string, zelle2 as string)
Dim wks1 As Worksheet
Dim wks2 As Worksheet
If rngTarget.Address = zelle1 Then 'ist nicht nötig, wird bei aufruf schon geprüft
Set wks1 = ActiveWorkbook.Worksheets(blatt1)
Set wks2 = ActiveWorkbook.Worksheets(blatt2)
wks2.Range(zelle2) = wks1.Range(zelle1) + wks2.Range(zelle2)
End If 'siehe kommentar zu if
End Sub

gruss andre

Anzeige
THX, gehe das mal durch :)
12.06.2003 22:42:24
B. Schneider

vielen Dank erstmal, muss gleich in die
Heia, hab Morgen schei.. viel zu Arbeiten.

Bis denne Bernd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige