ich habe eine Frage bzgl. Verknüpfungen. Ich habe schon ähnliche Themen hier gefunden, jedoch nichts, was meine Problemstellung 100% beantworten konnte. Aber ich bin zuversichtlich, dass einer von euch Fachleuten mir weiterhelfen kann.
Und zwar folgendes Problem: ich bin gerade dabei, ein Preiskalkulationstool mit Excel VBA zu basteln. Basieren tut das ganze auf sehr vielen Userforms die über Commandbuttons miteinanders verknüpft sind. Auf jeder Userform sind Checkboxen, die angewählt werden können. Immer wenn ein Commandbutton gedrückt wird und die Userform ausgeblendet wird, wird ermittelt, welche Checkboxen aktiviert wurden. Der Wert der aktivierten Checkboxen wird in ein Tabellenblatt geschrieben und dort wird dann der Preis ermittelt. Nachdem man die letzte Userform bearbeitet hat werden alle userforms ausgeblendet und der User sieht das Tabellenblatt auf dem aufgelistet ist, was er alles ausgewählt hat.
Ich hoffe das ist einigermaßen verständlich, lade gleich noch ein paar screenshots hoch.
Jetzt zu dem Problem: Es gibt 2 verschiedene Produkte die hier kalkuliert werden können, die beiden Produkte sind komplett unterschiedlich. Deswegen habe ich auch 2 Tabellenblätter erstellt, auf denen quasi die Endabrechnung, also die Auflistung der aktivierten Checkboxen, durchgeführt wird.
Bis letzte Woche hatte ich nur ein Produkt in dem Kalkulationstools aufgeführt, bis dahin hat alles top funktioniert. Seitdem ich, komplett unabhängig von dem anderen Produkt, einfach ein paar weitere Userform angelegt habe und ein weiteres Tabellenblatt, ist eine Verknüpfung zwischen Tabellenblatt 1 und 2 entstanden. Das heißt, wenn ich Produkt 2 konfiguriere, werden die Werte in Tabellenblatt 2 eingetragen und alle Werte in Tabellenblatt 1 werden gelöscht.
Wenn ich dann in Tabelle 2 bspw. auf Zelle A6 mit einem Rechtsklick klicke und auf Namen definieren gehe, steht dort Zelle A6 aus Tabellenblatt1. Dann lösche ich die Verknüpfung und alles ist gut, sobald ich die Kalkulation wiederhole, ist die Verknüpfung wieder da :22: Hat einer von euch eine Idee, wie so eine Verknüpfung entsteht?
Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken
Vielen Dank schon mal für potentielle Hilfestellungen
Sheets("Assembly Tools").Select 'Tabellenblatt für Vorrichtungen auswählen End Sub
Hier wird die erste Userform versteckt und der User ´befindet sich auf Userform U2_1_Startmaske_Vorrichtungen. D.h. im Kontext von dem oben geschriebenen, dass er Produkt 2 kalkulieren möchte.
Code:
Private Sub CommandButton1_Click() U2_1_1_Hand_Tools.Show 'Userform für Hand Tools anzeigen U2_1_Startmaske_Vorrichtungen.Hide 'Aktuelle Userform verstecken End Sub
Hier wird einfach nur ein bestimmtes Gebiet ausgewählt. Ich glaube nicht dass hier der Fehler liegt, deswegen nur zur Vollständigkeit.
Code:
Private Sub CommandButton6_Click() U405_Hand_Tools_Allgemein.Show End Sub
Hier wird das vermutlich problematische Arbeitsblatt aufgerufen.
Code:
Private Sub CommandButton11_Click()
Worksheets("Assembly Tools").Select Dim CB(4) As Boolean Dim CB_Inhalt(4) As String Dim CB_Anzahl(4) As String
If CheckBox1.Value = True Then CB(1) = True Else CB(1) = False End If
If CheckBox2.Value = True Then CB(2) = True Else CB(2) = False End If
If CheckBox3.Value = True Then CB(3) = True Else CB(3) = False End If
If CheckBox4.Value = True Then CB(4) = True Else CB(4) = False End If
Dim Numb As Integer Dim anZahl As Integer anZahl = 5 For Numb = 1 To 4 If CB(Numb) = True Then
Do Until Cells(anZahl, 1).Value = "" anZahl = anZahl + 1 Loop Cells(anZahl, 1) = CB_Inhalt(Numb) Cells(anZahl, 2) = CB_Anzahl(Numb)
Else
End If Next Numb
U405_Hand_Tools_Allgemein.Hide End Sub
Was hier passiert, ist folgendes: Durch das Pressem des Buttons wird ermittelt, welche Checkboxen und welche TextBoxen aktiviert wurden. Wenn eine Checkbox aktiviert wird, wird der Wert der Checkbox in Zeile 5 ( anZahl) geschrieben, da das Tabellenblatt so aufgebaut ist, dass in Zeile 5 der erste Wert stehen soll. Die TextBox funktioniert genau so, nur dass hier der User eine Zahl einträgt. Wie ihr seht, zuerst wird das spezifsche Worksheet namens "Assembly Tools" aufgerufen, damit wollte ich vermeiden, dass VBA die Werte nicht in ein anderes Tabellenblatt bestimmt und dort einfach die Zahlen einträgt. Als letztes wird die Userform wieder versteckt. Danach kommt nur noch ein einziger Button:
Code:
Private Sub CommandButton10_Click() Worksheets("Assembly Tools").Select U2_1_1_Hand_Tools.Hide
End Sub
Dann wird das Tabellenblatt "Assembly Tools" angezeigt. Das ist dann diese Auflistung was der User alles ausgewählt hat. Dadurch dass in Zelle 5 abwärts die Werte von den Checkboxen stehen, kann aus einem anderen Tabellenblatt der Preis ermittelt werden. Soweit so gut. Warum werden in einem Tabellenblatt "Kalkulation" bitte alle werte von A5 und B5 abwärts gelöscht? Warum entsteht eine Verknüpfung zwischen den beiden Tabellenblättern? Über Hilfe wäre ich sehr dankbar
30.06.2015, 12:40 (Dieser Beitrag wurde zuletzt bearbeitet: 30.06.2015, 17:40 von Rabe.
Bearbeitungsgrund: Code eingerückt
)
Hallo,
du brauchst in den allermeisten Fällen das Blatt nicht selektieren.
Code:
Option Explicit
Private Sub CommandButton11_Click() Dim Numb As Integer Dim anZahl As Integer Dim CB(4) As Boolean Dim CB_Inhalt(4) As String Dim CB_Anzahl(4) As String
ich wollte alle Codes sehen, die sich in dem Projekt befinden. Die, die Du dargestellt hast, sehen nicht so aus, als würden Sie das bewirken, was Du darstellst. Außerdem kann man mit den Codes nichts nachvollziehen, da ja die zugehörigen Buttons fehlen und ich nicht annehme, dass das irgendwer nachbauen will.
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
30.06.2015, 14:24 (Dieser Beitrag wurde zuletzt bearbeitet: 30.06.2015, 14:32 von Travis5002.)
So, habe hier eine Beispieldatei erstellet.
Wenn man sich in Tabellenblatt "Kalkulation" befindet und auf den einzigen Button im Blatt klickt, hat man die Wahl zwischen Produkt 1 und Produkt 2. Wenn man Produkt 2 anwählt, kann man über Checkboxen und TextBoxen eine Auswahl treffen und die Anzahl bestimmen, auf "Berechnung" landet man dann im Tabellenblatt und bekommt Preis und die gewählten Sachen gelistet. Allerdings entsteht genau da auch die Verknüpfung, habe im Tabellenblatt "Kalkulation" den Bereich A1:E12 mit "Test" gefüllt, damit man sieht was passiert: der im benachbarten Tabellenblatt neu beschriebene Bereich wird in diesem Blatt gelöscht =-/. Allerdings macht der das nicht jedes mal, wenn man ein bisschen rumspielt kommt das aufeinmal.
Bei Interesse könnt ihr gerne mal ein bisschen rumklicken, vielleicht findet ja jemand den Fehler im Code der eine Verknüpfung der beiden Blätter auslöst.
anZahl = .Cells(Rows.Count, 1).End(xlUp).Row + 1 If anZahl < 5 Then anZahl = 5 For Numb = 1 To 4 If CB(Numb) Then .Cells(anZahl, 1) = CB_Inhalt(Numb) .Cells(anZahl, 2) = CB_Anzahl(Numb) anZahl = anZahl + 1 End If Next Numb End With
UserForm2.Hide End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.