Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
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
Inhaltsverzeichnis

Variable definieren

Variable definieren
22.09.2018 14:58:28
Siegfried
Hallo zusammen,
ich habe irgendwo im Internet im Zusammenhang mit MsgBox folgendes gefunden:
Dim Msg, Style, Response
Msg = "soll dieser Bereich jetzt gedruckt werden ?" ' Define message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Define buttons.
wenn ich die Variablen einzeln definieren will, ist mir nur Msg klar
Dim Msg as String
wie wird Style und Response definiert? Beides as Variant?
Gruß
Siegfried

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable definieren
22.09.2018 15:27:35
Luschi
Hallo Siegfried,
schau mal auf das angehängte Bildchen und in die Vba-Hilfe.
Userbild
Gruß von Luschi
aus klein-Paris
AW: Variable definieren
22.09.2018 16:06:04
onur
Hi Luschi,
freut mich, daß du es bei Variablen-Deklarationen genauso hältst wie ich.
Wenn ICH geschrieben hätte:
"Dim Msg1, Msg2, Style, Response genügt"
hätte wieder irgend Jemand geschrieben:
"Das muss so lauten: Dim Msg1 As String, Msg2 As String, Style As Long, Response As Integer, weil es halt so üblich ist, und unter gewissen Umständen Probleme verursachen kann."
Meine Antwort: "Klar, unter bestimmten Bedingungen schon, aber nicht in DIESEM Fall." hätte auch nix gebracht.
Deswegen habe ich mich auch zurückgehalten, damit es nicht wieder zu endlosen Diskussionen kommt.
Gruß
Onur
Anzeige
AW: Variable definieren
22.09.2018 17:43:38
Sulprobil
Hallo Onur,
Das ist ja das Schöne: Du darfst irren, aber Deine Meinung äußern und bei ihr bleiben.
Nepumuk hatte IMHO die beste Antwort gegeben, aber auch Luschi's und Dein Beitrag sind nicht unnütz: sie können immer noch als schlechtes Beispiel dienen. Da Ihr offensichtlich Eure Meinung beibehalten wollt, empfehle ich, auch noch Option Explicit und alle Variablendeklarationen wegzulassen. "Verschwendet" Eure Zeit nicht mit Variablendeklarationen, sondern verbringt lieber ihr Vielfaches mit Fehlersuche :-)
Viel Spaß,
Bernd P
Ganz recht, Bernd! ;-) Gruß owT
22.09.2018 17:52:52
Luc:-?
:-?
AW: Variable definieren
22.09.2018 18:59:48
onur
Ja, nee, ist klar.
Wenn ich in meinem Code Fehler suchen musste (natürlich passiert das leider oft genug, bei Dir wahrscheinlich ja nie, da du ja offensichtlich alle "Regeln" perfekt befolgst), dann lag der Fehler noch nie an der Variablendeklaration.
Option Explicit wegzulassen habe ich mir hier auch abgewöhnt, da dauernd irgend welche Kommentare gepostet wurde, das verstösse doch gegen die Lehrbuchmeinung und der Code offensichtlich nicht idiotensicher genug war.
Es gibt halt auch Leute die z.B. "For" und "Next" immer mit grossem F bzw grossem N in den Editor tippen, da das ja die "richtige" Schreibweise ist, aber das ist doch deren Sache, ich würde da nie irgend welche sarkastischen Kommentare deswegen posten.
Aber wenn man jahrelang gebraucht hat, mühselig VBA zu lernen, blieb einem wahrscheinlich nix anderes übrig, alles auswendig zu lernen, ohne es zu verstehen oder zu hinterfragen oder erfahren zu wollen, warum das so ist und sein Leben lang nur auf diese Art zu programmieren.
Wie bei der Führerscheinprüfung - Wenn man gefragt wird, wie lang der Bremsweg bei 100 km/h ist, sollte man nicht antworten: "Keine Ahnung, dazu müsste ich erst wissen,was für ein Gefälle herrscht, wie das Wetter ist, welcher Belag auf der Strasse ist, was für Reifen aufgezogen sind und was für Bremsen das Auto hat".
Da fällt man halt durch, denn für die Nicht-Ingenieure hat man eine Faust-Formel (100/10)x(100/10), also 100 m. Das hat zwar nicht viel mit Physik und der tatsächlichen Realität zu tun, aber ist idiotensicher zu berechnen und deswegen halt sowas wie "Gesetz" - jede andere Antwort ist "falsch" und wird nicht zugelassen.
Aber Meinungen sind ja wie A...löcher, jeder hat Eine.
Anzeige
AW: Variable definieren
22.09.2018 19:10:26
onur
Ja, nee, ist klar.
Wenn ich in meinem Code Fehler suchen musste (natürlich passiert das leider oft genug, bei Dir wahrscheinlich ja nie, da du ja offensichtlich alle "Regeln" perfekt befolgst), dann lag der Fehler noch nie an der Variablendeklaration.
Option Explicit wegzulassen habe ich mir hier auch abgewöhnt, da dauernd irgend welche Kommentare gepostet wurde, das verstösse doch gegen die Lehrbuchmeinung und der Code offensichtlich nicht idiotensicher genug war.
Es gibt halt auch Leute die z.B. "For" und "Next" immer mit grossem F bzw grossem N in den Editor tippen, da das ja die "richtige" Schreibweise ist, aber das ist doch deren Sache, ich würde da nie irgend welche sarkastischen Kommentare deswegen posten.
Aber wenn man jahrelang gebraucht hat, mühselig VBA zu lernen, blieb einem wahrscheinlich nix anderes übrig, alles auswendig zu lernen, ohne es zu verstehen oder zu hinterfragen oder erfahren zu wollen, warum das so ist und sein Leben lang nur auf diese Art zu programmieren.
Wie bei der Führerscheinprüfung - Wenn man gefragt wird, wie lang der Bremsweg bei 100 km/h ist, sollte man nicht antworten: "Keine Ahnung, dazu müsste ich erst wissen,was für ein Gefälle herrscht, wie das Wetter ist, welcher Belag auf der Strasse ist, was für Reifen aufgezogen sind und was für Bremsen das Auto hat".
Da fällt man halt durch, denn für die Nicht-Ingenieure hat man eine Faust-Formel (100/10)x(100/10), also 100 m. Das hat zwar nicht viel mit Physik und der tatsächlichen Realität zu tun, aber ist idiotensicher zu berechnen und deswegen halt sowas wie "Gesetz" - jede andere Antwort ist "falsch" und wird nicht zugelassen.
Aber Meinungen sind ja wie A...löcher, jeder hat Eine.
Anzeige
AW: Response As Integer -...
23.09.2018 08:57:39
Luschi
Hallo Luc,
nun sei nicht päpstlicher als der Papst. Im Beispiel der Vba-Online-Hilfe zu MsgBox steht:
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
siehe: https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/msgbox-function?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev11.query%3FappId%3DDev11IDEF1%26l%3Dde-DE%26k%3Dk(vblr6.chm1008978)%3Bk(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue
Da die Rückgabewerte der Enumeration 'VbMsgBoxResult' Integer-Werte sind, ist das auf jeden Fall kein Fehler, die Variable 'Response' mit dem Integer-Typ zu belegen.
In Dot.Net (C# & Vb.Net) hat M$ 'var' zugelassen, wobei das nicht dem Variant von Vba entspricht, sondern der Compiler setzt den korrekten Datentyp ein, ansonsten wäre man z.B. in LINQ als Programmierer fast aufgeschmissen, denn da ist der Datentyp davon abhängig, ob man die Ergebnismenge
- filtert (Where)
- sortiert (OrderBy)
- selektiert und umordnet usw.
Frage: habt ihr Euch schon verstärkt mit JavaScript beschäftigt, denn damit kann man ab 'Office 2019' auch Makros/Skripte schreiben?
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Response As Integer -...
23.09.2018 09:31:59
Nepumuk
Hallo Luschi,
VbMsgBoxResult ist eine Enumeration und daher grundsätzlich vom Typ Long.
Gruß
Nepumuk
Zur JS-Frage
23.09.2018 12:05:31
Luc:-?
Kommt darauf an, was Du unter verstärkt verstehst, Luschi;
im Zusammenhang mit Xl-Tabellen-Darstellung als HTML-Tab hatte ich mich damit befasst, denn die meisten Browser verstehen kein VBS. Folglich sind mir Unterschiede (zu VBA) bewusst, die bei Einbettung von JS-Codes in VBA-Pgmm zu Fehlern führen können, vor allem die JS-Case-Sensivität.
Gruß + schöSo, Luc :-?
AW: Variable definieren
22.09.2018 15:29:33
Sepp
Hallo Siegfried,
Sub msg()
  Dim msg As String, style As Long, response As Boolean
  msg = "soll dieser Bereich jetzt gedruckt werden ?" ' Define message. 
  style = vbYesNo + vbCritical + vbDefaultButton2 ' Define buttons. 

  response = MsgBox(msg, style)

  If response Then
    MsgBox "Ja"
  Else
    MsgBox "Nein"
  End If

  'Ohne Variablen 

  If MsgBox("soll dieser Bereich jetzt gedruckt werden ?", vbYesNo + vbCritical + vbDefaultButton2) = vbYes Then
    MsgBox "Ja"
  Else
    MsgBox "Nein"
  End If
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Wenn die Variablen nur einmal verwendet werden, würde ich ohne arbeiten!
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Variable definieren
22.09.2018 15:44:36
Siegfried
Danke Sepp,
Gruß
Siegfried
AW: Variable definieren
22.09.2018 15:49:42
Nepumuk
Hallo Siegfried,
korrekt wäre:
Dim msg As String, style As VbMsgBoxStyle, response As VbMsgBoxResult

Gruß
Nepumuk
AW: Variable definieren für MsgBox
22.09.2018 15:53:29
fcs
Hallo Siegfried,
wenn man im VBA-Editor unter VbMsgBoxStyle sucht dann wird eine Liste mit möglichen Werten angezeigt.
Für die "normale" MsgBox reichen Integer-Werte. Will man alle Einstellmöglichkeiten abdecken muss man für den Box-Style die Variablen als Long deklarieren.
Für Response (im Objekthatalog unter VbMsgBoxResult) reicht Integer oder sogar Byte, da Werte zwischen 1 und 7 zurückgegeben werden.
Gruß
Franz

Sub Test()
'Deklarationen für MsgBox
Dim msgText As String, msgTitel As String, lStyle As Long, iResponse As Integer
msgText = "Was willst du jetzt machen?"
iStyle = vbYesNo + vbCritical + vbQuestion + vbDefaultButton2
msgTitel = "Makro Testen"
iResponse = MsgBox(msgText, iStyle, msgTitel)
Select Case iResponse
Case vbYes
MsgBox "Ja geklickt", vbOKOnly, msgTitel
Case vbNo
MsgBox "Nein geklickt", vbOKOnly, msgTitel
End Select
End Sub

Anzeige
AW: Variable definieren
24.09.2018 09:52:37
daniel
Hi
im Zweifel lässt man sich den benötigten Variablentyp von VBA ermitteln:
man gebe im Direktfenster die Befehle ein
?VarType(vbYesNo)
?VarType(Msgbox("test", vbYesNoCancel))

die Rückgabe wird ein Zahlenwert sein, dessen Zuordnung zu einem VariablenTyp man in der Hilfe nachlesen kann.
Gruß Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige