Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  -Wie realisiere ich Variablenkontrolle

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
  
CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48
  
KISTERS 3DViewStation: Neuer Strukturvergleich ab sofort verfügbar, eine Pressemitteilung
Autor Thema:  -Wie realisiere ich Variablenkontrolle (1402 mal gelesen)
sven180581
Mitglied



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

Beiträge: 19
Registriert: 23.01.2013

erstellt am: 18. Apr. 2013 14:54    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

Servus zusammen,

habe folgenden Code geschrieben.
Möchte zwei abfragen realisieren.
Einmal Materialart... das Klappt
Dann neue Abfrage über Materialstärke. Hab in MsgBox zwei Werte vorgegeben. Es ist aber egal welchen Wert ich in die Messagebox eingebe, es öffnet sich trotzdem das Excelfile.
Wie muss ich den Code anpassen, dass nur eine der geforderten Werte der Messagebox das Excelfile öffnen?

Sub CATMain()

Set Excel = CreateObject("Excel.Application")
Dim Materialabfrage As Integer
Dim Blechstaerke As Double


retry:
Materialabfrage = InputBox("Bitte Materialart wählen" & Chr(13) & Chr(10) & "[1] Stahl  [2] Alu", "Eingabe Materialart ")
    If (Materialabfrage < 1) Or (Materialabfrage > 2) Then
    GoTo retry

        End If


If Materialabfrage = 1 Then


    Blechstaerke = InputBox("Bitte Blechstaerke wählen" & Chr(13) & Chr(10) & "[0.7] 0.7mm  [0.75] 0.75mm", "Eingabe Blechstaerke", Blechstaerke)
   
     
Hier wird der Eingegebene Wert an Blechstaerke weitergegeben, aber die nachfolgende If anweisung akzeptiert jeden wert!


If Blechstaerke = 0.7 Then GoTo Line1

Line1:

        Excel.Visible = True
        Excel.Workbooks.Open SetzePfad & "L:\Schreiben\Schriften\Datenbank.xlsx"
        Excel.Sheets(1).Activate
        Excel.Sheets("Stahl 0,7 mm").select
        Value = Excel.Sheets("Stahl 0,7 mm").Range("A2").Value

        Excel.Quit
        MsgBox Value


      End If

End Sub
  Vielen Dank vorab.


Gruß

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 18. Apr. 2013 15:40    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 sven180581 10 Unities + Antwort hilfreich

Servus
Du vergleichst Äpfel mit Birnen: "Blechstaerke" ist ein String, 0.7 ein Long (oder Double??).
Vor dem Vergleich muss du die Typen konvertieren (zB CDbl)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

sven180581
Mitglied



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

Beiträge: 19
Registriert: 23.01.2013

erstellt am: 19. Apr. 2013 08:14    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

Moin Bernd,

vielleicht steh ich im Wald aber ich habe die Blechstaerke ddoch oben als Double deklariert.

Muss ich des dann extra nochmal durchführen?

Vielen Dank vorab.

Gruß
Sven

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 19. Apr. 2013 08:42    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 sven180581 10 Unities + Antwort hilfreich

Servus
Ups, du hast recht.
lass wir mal den Wert der Blechstärke ausgeben (Msgbox).
Bei der Eingabe wird die Ländereinstellung für das Dezimaltrennzeichen verwenden (in der Inputbox) also: 0.7 -> 7 und 0,7 -> 0.7
Dies wird interessant wenn das Makro unabhängig von der Sprache laufen soll.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

sven180581
Mitglied



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

Beiträge: 19
Registriert: 23.01.2013

erstellt am: 19. Apr. 2013 09:11    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

Sers,

ja stimmt der Wert für die Blechstärke steht bei Eingabe von 0,7  auf = 0,7. Bei Eingabe von 0.7 ist das Ergebnis der Blechstärke gleich 7
Der Vergleich hinkt aber, da im Code ja nur 0.7 funktioniert.

Hmm ne Idee wie man das anders machen kann?

Vielen Dank Vorab.

Gruß

[Diese Nachricht wurde von sven180581 am 19. Apr. 2013 editiert.]

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 19. Apr. 2013 09:35    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 sven180581 10 Unities + Antwort hilfreich

Servus
ggf musst du vor der Typkonvertierung den Punkt durch ein Komma ersetzen. "0.7" -> "0,7" -> ergibt 0.7 -> wird in MsgBox als 0,7 angezeigt
Das ist zwar unlogisch (und der Code funktioniert dann nur in der deutschen Umgebung) , aber bei der Konvertierung werden die Ländereinstellungen beachtet.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

sven180581
Mitglied



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

Beiträge: 19
Registriert: 23.01.2013

erstellt am: 19. Apr. 2013 10:00    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

Reicht mir, wenn es in der deutschen Umgebung funzt
Hab es mal so probiert und des Double  oben raus genommen.
Aber klappt immer noch net.

Das echt fuchsig.

Blechstaerke = InputBox("Bitte Blechstaerke wählen" & Chr(13) & Chr(10) & " [0,7] = 0,7mm  [0,75] = 0,75mm", "Eingabe Blechstaerke", Blechstaerke)
Blechstaerke = CDbl(Blechstaerke)

If Blechstaerke = 0.7 Then GoTo Line1

....

Gruß

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 19. Apr. 2013 10: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 Nur für sven180581 10 Unities + Antwort hilfreich

Servus
ich würde es so probieren:
Code:
Dim Eingabe As String
Dim Blechstaerke As Double
Eingabe = InputBox("Bitte Blechstaerke wählen" & Chr(13) & Chr(10) & " [0,7] = 0,7mm  [0,75] = 0,75mm", "Eingabe Blechstaerke", Blechstaerke)
Blechstaerke = CDbl(Replace(Eingabe, ".", ","))

If Blechstaerke = 0.7 Then
    MsgBox "Wert ist 0,7mm "
End If



Gruß
Bernd

PS: AFAIK wird inzwischen empfohlen Sprungmarken nicht mehr zu verwenden (ggf nur noch zur Fehlerbehandlung)

------------------
Warum einfach, wenn es auch kompliziert geht.

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

sven180581
Mitglied



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

Beiträge: 19
Registriert: 23.01.2013

erstellt am: 19. Apr. 2013 10:20    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

Funzt ! Vielen herzlichen Dank .

Manchmal ist es garnicht so einfach.

Danke

Gruß

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

sven180581
Mitglied



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

Beiträge: 19
Registriert: 23.01.2013

erstellt am: 19. Apr. 2013 13:33    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


Excelzugriff1.txt

 
So code für Excelzugriff fertig.

Schaut einwenig mächtig aus!
Gibt es eine möglichkeit diesen ein wenig schlanker zu machen?

Code als Anhang.

Vielen Dank

Gruß

Sven

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 19. Apr. 2013 14: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 sven180581 10 Unities + Antwort hilfreich

Servus
Ja, du könntest zB den String für den Namen des Worksheets mit den Schleifen "zusammensetzen" bzw Ermitteln und dann nur einmal den Zugriff auf Excel verwenden.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

sven180581
Mitglied



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

Beiträge: 19
Registriert: 23.01.2013

erstellt am: 21. Apr. 2013 20:55    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

Sees, wie meinst denn du das genau?  Gibt es die Möglichkeit eine Schleife so zu bauen dass der excelaufruf nur einmal im code vorkommt? Mit if und for Schleife?

Gruß

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 21. Apr. 2013 21:04    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 sven180581 10 Unities + Antwort hilfreich

Servus
zB (geht bestimmt noch "schöner") :
Code:
Excel.Visible = True
Excel.Workbooks.Open SetzePfad & "L:\Schreiben\Schriften\Datenbank.xlsx"  'Was soll hier die Variabel SetzePfad??      
if Materialabfrage = 1 and Blechstaerke = 0.7 then
  Value = Excel.Sheets("Stahl 0,7 mm").Range("A2").Value
elseif Materialabfrage = 1 and Blechstaerke = 0.75 then
  Value = Excel.Sheets("Stahl 0,75 mm").Range("A2").Value
elseif Materialabfrage = 2 and Blechstaerke = 1 then
  Value = Excel.Sheets("Alu1mm").Range("A10").Value
else
  Value = Excel.Sheets("Alu 1,05 mm").Range("A10").Value
end if
Excel.Quit
MsgBox Value
Allerdings: was passiert wenn andere Werte eingeben werden? ....
Kannst du nicht immer die gleiche Zelle in allen Tabellen nehmen (ggf auch mit Zellnamen arbeiten)?
Gruß
Bernd

PS: Die Abfrage der Blechdicke brauchst du auch nur einmal.

------------------
Warum einfach, wenn es auch kompliziert geht.

[Diese Nachricht wurde von bgrittmann am 21. Apr. 2013 editiert.]

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

sven180581
Mitglied



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

Beiträge: 19
Registriert: 23.01.2013

erstellt am: 22. Apr. 2013 09:56    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

Servus,
achso ja das schaut ganz gut aus.

Also ich bin mit den Zellen flexibel.
Kann auch immer Die werte aus z.b.A2 oder so auslesen lassen.
Bezeichung der Zelle würde dkritisch lauten! Aber das ja nen String. Benötige ja aus der Datenbank den dazugehörigen Zahlenwert.

Also momentan akzeptiert mein Code nur die vorgegebenen Blechstärken. Bei Eingabe anderer springt es zurück in den Code ohne etwas auszuführen.

Bei deinem Code akzeptiert er alle Zahlen in Bereich der Blechstärke

Warum fragst du?

Gruß
Sven

[Diese Nachricht wurde von sven180581 am 22. Apr. 2013 editiert.]

[Diese Nachricht wurde von sven180581 am 22. Apr. 2013 editiert.]

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)2025 CAD.de | Impressum | Datenschutz