- ベストアンサー
【VB】プログラム経験のある方教えてください!
お世話になります。 大変初歩的なプログラムなんですが、自分は経験がないため教えていただきたく存じます。 ABCD という4桁の数字があります。 Aには西暦の末尾 Bには月 CDには日を入れてメッセージボックスに表示したいのです。 よろしくお願いいたします。
- sineminna
- お礼率73% (217/296)
- Visual Basic
- 回答数8
- ありがとう数5
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
さっと、思いつきで。 Function Test_AAA() As Boolean Dim DAT As Date Dim ABCD As String DAT = Now() ABCD = Right(Format$(DAT, "yyyy"), 1) Select Case Format$(DAT, "m") Case "10" ABCD = ABCD & "O" Case "11" ABCD = ABCD & "N" Case "12" ABCD = ABCD & "D" Case Else ABCD = ABCD & Right(Format$(DAT, "m"), 1) End Select ABCD = ABCD & Format$(DAT, "dd") MsgBox ABCD, vbInformation, "TEST" End Function ・Format(expr,fmt):exprをfmtの書式に ・Right(str,n):文字列strを右からn文字 もちょっとウマいやり方あるかもなぁ。
その他の回答 (7)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 #1 さんの回答は、質問に対する考え方のロジックとしては間違いないと思います。 本来なら、そういう回答でしか出てこないと思います。 その後に書かれている内容から、こんな風で落ち着くとは思いますが、質問のように最初に、変数ABCDがあるという作りにするなら、Function で作っていく方法しか思いつきません。 Dim myDate As Date Dim A As String, B As String, CD As String myDate = Date A = Right(Format(myDate, "yy"), 1) B = Left(Format(myDate, String(3 + (Month(myDate) < 10) * 2, "m")), 1) CD = Format(myDate, "dd") MsgBox A & B & CD
お礼
どうもありがとうございました。
- rappaozisan
- ベストアンサー率34% (63/182)
a = Right(Format(Now(), "yyyy"), 1) & Mid("123456789OND", Format(Now(), "m"), 1) & Format(Now(), "dd") MsgBox a アホなんでこんな方法しか思いつきませんでした。
お礼
なるほど。
- hana-hana3
- ベストアンサー率31% (4940/15541)
ちょっと訂正 Select Case M Case "10": M = "O" Case "11": M = "N" Case "12": M = "D" End Select を削除して、 If M >= "10" Then M = Left(Format(day, "mmm"), 1) で行う事もできます。
お礼
ご親切にどうもありがとうございました。 大変参考になりました。
- hana-hana3
- ベストアンサー率31% (4940/15541)
Sub setABCD() Dim M As String, ABCD As String Dim day As Date day = "2005/12/22" M = Month(day) Select Case M Case "10": M = "O" Case "11": M = "N" Case "12": M = "D" End Select ABCD = Right(Year(day), 1) & M & Format(day, "dd") MsgBox ABCD End Sub でどうかな?
お礼
すばらしいです!! 恩に着ます!!
- hana-hana3
- ベストアンサー率31% (4940/15541)
>Bには月 10月以降はどのように表示(区分)するのですか? A,B,C とかですか?
補足
すみません。補足します。 月の表示は10月→O(オー) 11月→N 12月→Dです。 どうかおねがいします。m(__)m
- nicnicnic
- ベストアンサー率47% (8/17)
始めまして、こんな感じでいかがでしょうか? ~~ここから~~ Public Sub test() Dim msg As String msg = Right(Format(Date, "yyyy"), 1) & Format(Date, "mmdd") MsgBox msg End Sub ~~ここまで~~
補足
すみません。補足します。 月の表示は10月→O(オー) 11月→N 12月→Dです。 どうかおねがいします。m(__)m
- OsieteG00
- ベストアンサー率35% (777/2173)
西暦:int(ABCD/1000) 月:mod(int(ABCD/100),10) 日:mod(ABCD,100) をmsgbox で表示すればよいと思います。
補足
????????
関連するQ&A
- EXCELで数字を入れて隣のセルに特定の文字を表示させたい場合
仕事でエクセルを使い始めたばかりで、いくら調べてもいい案が 浮かびません。皆さんのお知恵を貸してください。 A列のセルに数値(5桁、もしくは6桁)を入力した時、 ・末尾が0の時は「営業所」、 ・末尾が9の時は「支店」 とB列のセルに表示させるようにしたいです。 営業所は数字が5桁で末尾が必ず「0」に、支店は数字が6桁で末尾が 必ず「9」になります。 自分なりにIF関数を使ってみましたが、♯NAME?のエラーが出るなど まったく進みません。 初歩的な質問で申し訳ありませんが、よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- VB.NetのプログラムでVB6.0のプログラムを
お世話になります。 VB.Net で作成したプログラムAがあります。 VB6.0で作成したプログラムBがあります。 プログラムBはずっとイベント待ちの状態になっております。 AのプログラムからBのプログラムにイベントを発生させたいのですが、BのプログラムにActiveXコントロールを貼り付けるとか、何かしらの方法はあるでしょうか? 比較的簡単な方法でそのような事が出来る例などご紹介いただけますようよろしくお願い致します。
- 締切済み
- Visual Basic
- 6桁の数字の上2桁で表される数字を西暦に変換
エクセル2003を使っています。 6桁の数字があります。 上2桁が西暦を表しています。 A列 B列 09xxxx → 2009 90xxxx → 1990 85xxxx → 1985 A列にあるデータを読み取ってB列に西暦で表示する方法を教えてください。 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- 数字探索について、プログラムかフローチャートを教えてください(>_<)
数字探索について、プログラムかフローチャートを教えてください(>_<) 使用するアプリケーションはMicrosoftOffice2007-ExcelのVisualBasicです。 5桁の数字500個の中から、指定した数字があるかどうかを探索したいと思ってます。 2つ以上の位で、値が一致したときに、その数字を表示したいです。 ※数字について、"40"のように、5桁に満たない数字は、"00040"と、"0"を前に付けています。 Ex. 探索する数字:"04256" 探索される数字↓↓ 46025……一致する位なし 74596……2桁一致 02256……4桁一致 34210……2桁一致 よって、メッセージボックスには 「2桁一致は」 「74596」 「34210」 「3桁一致はありませんでした」 「4桁一致は」 「74596」 「完全一致はありませんでした」 のように表示させたいと思っています。 フローチャートさえ書ければ、あとは試行錯誤、自分で頑張ってみるので、フローチャートだけでも、一緒に考えて頂けませんか。 お手数ですが、お力添え願いますm(__)m
- ベストアンサー
- Visual Basic
- 西暦の下2桁をたして・・・
初心者です。 カウンターを設置した経験だけです。 西暦の下2桁をたしてその和が1桁になるようにして Aだったら 10をひくその数字 Bだったら 5をたすその数字 がでるようにしたいのです。 本を読んでなにか似た例がないかと捜したのですが まったくわかりません。 たとえば 1974だと 7+4=11 で 1+1=2 で ここで Aだと 10-2=8 Bだと 5+2=7 アドバイス や 参考になるサイトをご存知でしたら 教えてください。 よろしくお願いします。
- 締切済み
- CGI
- VB.NetのプログラムでVB6.0のプログラム2
お世話になります。 VB.Netで作成されたプログラムAがあります。 VB6.0で作成されたプログラムBがあります。 プログラムBはイベント待ち状態になっており、特定のイベント(ボタンクリックイベント等)で特定のプロシジャーを実行するようになっております。 プログラムAからプログラムBの特定のイベントを発生させる、もしくはプログラムBの特定のプロシジャーを実行させる方法を探しております。 前回同じような質問をさせていただきましたが、こちら側からWindowsイベントとVB6.0のイベントの指定の説明が抜けておりましたので、改めて質問をさせていただきます。 何卒よろしくお願い申し上げます。
- ベストアンサー
- Visual Basic
- VB6のプログラムを助けてください…
いつもお世話になっております。 みなさんの知恵を貸してください。 よろしくお願いします。 現在、VB6のプログラムを作成しています。 以下の質問のプログラムを作成したいですが、どのようにプログラムを 作成していいのか分かりません。 ~質問内容~ ☆ 機能仕様 シリアル通信送信側のプログラムを作成する。 ☆ 通信仕様 ターミネータ:CR(キャリッジリターン) ☆送信側のプログラム 1-a.フォーム上に以下のコントロールを追加する ・ポート番号設定用テキストボックス ・ポーレート設定用コンボボックス ・コマンド送信文字列入力用テキストボックス ・「送信」ボタン 1-b.ボーレート設定用コンボボックスは、9600、19200、38400の 3パターンのリストで構成する。それ以下の値は入力させないようにする。 1-c.「切断」ボタンでポートを閉じる。 1-d.「送信」ボタンでコマンド文字列入力用テキストに入力された文字列をターミネータを付けて送信する。 分かる範囲でよろしければ、教えてください。 よろしくお願いします。
- 締切済み
- Visual Basic
- エクセルのVBプログラムについて
インターネット上にあった 下記のVBプログラムをエクセルで使用しているのですが、 セルの変化を数値入力後、「エンター」を押さなければ認識しません。 『 ='Sheet2'!N13 』のように他のシートから数値を取り、その変化で、 メッセージボックスを起動させたいのですが、上手くいかないのです。 何方か、対処方法、宜しく御願いします。 : 次のサンプルは、値を変更したセルがセルA1~B5に含まれる場合にのみ、 メッセージボックスを表示します。 対象とするワークシートのシートモジュールに記述してください。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:B5")) Is Nothing Then Exit Sub Else MsgBox "セルの値が変更されました" End If End Sub
- 締切済み
- Excel(エクセル)
- EXCEL VBA ポップアップを表示する方法
ご質問させていただきます。 Sheet1のA2~A1701まで4桁の数字(各行で重複しない4桁の数字です)、 Sheet1のB2~B1701とSheet1のC2~C1701にはDDEで取り込んだリアルタイムデータ、 Sheet1のD2~D1701には、B2~B1701とC2~C1701のリアルタイムデータを使ってIF関数で条件判定をしてYESまたはNOを表示する関数式が入力されています。 やりたいことは、D列の条件判定でYESが表示された場合、YESが表示された行のA列の4桁の数字をポップアップで表示させることです。 このようなことはできるのでしょうか? メッセージボックスを使えば良いのかもしれませんが、当方VBA初心者のためメッセージボックスの使い方がよく分かりません。 どなたか教えていただけないでしょうか? よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
お礼
十分です!! どうもありがとうございました!!