kobouzu_su の回答履歴
- エクセルVBA/ Formatで文字列が数値に化ける?
いつもお世話様です。 エクセルVBAでFormatを使うと、文字列中にeが一つ入っていると、「指数」とみなされて勝手に数値に化けてしまうようです。 話を簡単にするため、問題のコートを簡易化したコードが下記のtest1です。 入力されるのは常に3文字以内の英数です。 test1のコードは、ab9と入れればAB9、01とか20とか入れると、予定通り001や020を返してくれます。 ところが、なかには1E1や4E3なども入力する必要があり、これを入れると010や4000に化けてしまいます。 現在は、対処するため、下記test2のように、文字列中に"E"があるかどうかで処理を分岐させていますが、ほかに何か良い方法はないでしょうか? Sub test1() Dim x As String, y As String, z As String x = Application.InputBox("CODEを入力してねん。", Type:=2) y = StrConv(StrConv(x, vbUpperCase), vbNarrow) z = Format(y, "000") MsgBox z & " Typeだよ。" End Sub Sub test2() Dim x As String, y As String, z As String x = Application.InputBox("CODEを入力してねん。", Type:=2) y = StrConv(StrConv(x, vbUpperCase), vbNarrow) If InStr(y, "E") > 0 Then z = y Else z = Format(y, "000") End If MsgBox z & " Typeだよ。" End Sub
- エクセル2000(EXCEL)で日毎で実行させるマクロをひとつのオートシェイプに登録する方法
エクセル2000(EXCEL)でツール→マクロ→マクロの新しい記録(マクロの自動記録)を使用して日によって実行する内容の違うマクロ31個、つまり31日分のマクロを作ったとします。ひとつのオートシェイプを実行ボタンとして使いこれに日毎によって実行するマクロを変える様に登録する事ってできるのでしょうか?日付が変わっている条件としてはNOW関数で拾えるとしてこの条件を元にひとつのオートシェイプで日ごとに実行するマクロを変えるということはできますか?やっぱり実行ボタンとしてのオートシェイプを31個作りひとつづつマクロを登録していくしかないのでしょうか?またできない場合は他にどんな方法があるでしょうか?分かる方宜しくお願いいたします。
- 締切済み
- Visual Basic
- tendo12
- 回答数5
- エクセルVBA/ Formatで文字列が数値に化ける?
いつもお世話様です。 エクセルVBAでFormatを使うと、文字列中にeが一つ入っていると、「指数」とみなされて勝手に数値に化けてしまうようです。 話を簡単にするため、問題のコートを簡易化したコードが下記のtest1です。 入力されるのは常に3文字以内の英数です。 test1のコードは、ab9と入れればAB9、01とか20とか入れると、予定通り001や020を返してくれます。 ところが、なかには1E1や4E3なども入力する必要があり、これを入れると010や4000に化けてしまいます。 現在は、対処するため、下記test2のように、文字列中に"E"があるかどうかで処理を分岐させていますが、ほかに何か良い方法はないでしょうか? Sub test1() Dim x As String, y As String, z As String x = Application.InputBox("CODEを入力してねん。", Type:=2) y = StrConv(StrConv(x, vbUpperCase), vbNarrow) z = Format(y, "000") MsgBox z & " Typeだよ。" End Sub Sub test2() Dim x As String, y As String, z As String x = Application.InputBox("CODEを入力してねん。", Type:=2) y = StrConv(StrConv(x, vbUpperCase), vbNarrow) If InStr(y, "E") > 0 Then z = y Else z = Format(y, "000") End If MsgBox z & " Typeだよ。" End Sub
- エクセルVBA/ Formatで文字列が数値に化ける?
いつもお世話様です。 エクセルVBAでFormatを使うと、文字列中にeが一つ入っていると、「指数」とみなされて勝手に数値に化けてしまうようです。 話を簡単にするため、問題のコートを簡易化したコードが下記のtest1です。 入力されるのは常に3文字以内の英数です。 test1のコードは、ab9と入れればAB9、01とか20とか入れると、予定通り001や020を返してくれます。 ところが、なかには1E1や4E3なども入力する必要があり、これを入れると010や4000に化けてしまいます。 現在は、対処するため、下記test2のように、文字列中に"E"があるかどうかで処理を分岐させていますが、ほかに何か良い方法はないでしょうか? Sub test1() Dim x As String, y As String, z As String x = Application.InputBox("CODEを入力してねん。", Type:=2) y = StrConv(StrConv(x, vbUpperCase), vbNarrow) z = Format(y, "000") MsgBox z & " Typeだよ。" End Sub Sub test2() Dim x As String, y As String, z As String x = Application.InputBox("CODEを入力してねん。", Type:=2) y = StrConv(StrConv(x, vbUpperCase), vbNarrow) If InStr(y, "E") > 0 Then z = y Else z = Format(y, "000") End If MsgBox z & " Typeだよ。" End Sub
- エクセル2000(EXCEL)で日毎で実行させるマクロをひとつのオートシェイプに登録する方法
エクセル2000(EXCEL)でツール→マクロ→マクロの新しい記録(マクロの自動記録)を使用して日によって実行する内容の違うマクロ31個、つまり31日分のマクロを作ったとします。ひとつのオートシェイプを実行ボタンとして使いこれに日毎によって実行するマクロを変える様に登録する事ってできるのでしょうか?日付が変わっている条件としてはNOW関数で拾えるとしてこの条件を元にひとつのオートシェイプで日ごとに実行するマクロを変えるということはできますか?やっぱり実行ボタンとしてのオートシェイプを31個作りひとつづつマクロを登録していくしかないのでしょうか?またできない場合は他にどんな方法があるでしょうか?分かる方宜しくお願いいたします。
- 締切済み
- Visual Basic
- tendo12
- 回答数5
- エクセルでVBAを組んだのですが・・・
エクセルのVBAで右クリックで動くマクロを組んだのですが、一回一回メニューが出てしまいます。 このマクロが動くときは、右クリックのメニューが出ないようにするにはどうしたらいいですか? 教えてください。
- エクセルの埋め込まれた標準フォントについて
新規にWorkBookを作成した時に、その時点で設定されている「標準フォント」がそのBookにまるでDNAのように埋め込まれ、その後、そのBookをどのパソコンに持っていこうと、ワークシートの挿入をすると、最初に埋め込まれた設定に従ってフォントが設定されるようです。 たとえば、「Terminal」というフォントでサイズ14という設定が一旦埋め込まれたBookは、そんなフォントがない別のパソコンで、標準フォントがMS明朝でサイズ11という設定のエクセルでシートの挿入をしても、「Terminal」というフォント名が表示されサイズ14という設定になっています。(そんなフォントは入れてないので実際にフォントがTerminalになっているのではないと思いますが、サイズは間違いなく14です。) 挿入したシートの全セルを選択して新たにフォントを設定しなおす以外に、この設定をクリアして、新たに挿入したシートは自動的に現在の標準フォントとなるような方法はないでしょうか?
- エクセルの埋め込まれた標準フォントについて
新規にWorkBookを作成した時に、その時点で設定されている「標準フォント」がそのBookにまるでDNAのように埋め込まれ、その後、そのBookをどのパソコンに持っていこうと、ワークシートの挿入をすると、最初に埋め込まれた設定に従ってフォントが設定されるようです。 たとえば、「Terminal」というフォントでサイズ14という設定が一旦埋め込まれたBookは、そんなフォントがない別のパソコンで、標準フォントがMS明朝でサイズ11という設定のエクセルでシートの挿入をしても、「Terminal」というフォント名が表示されサイズ14という設定になっています。(そんなフォントは入れてないので実際にフォントがTerminalになっているのではないと思いますが、サイズは間違いなく14です。) 挿入したシートの全セルを選択して新たにフォントを設定しなおす以外に、この設定をクリアして、新たに挿入したシートは自動的に現在の標準フォントとなるような方法はないでしょうか?
- <Excel> 並び替えの自動化について
OS:XP Office:2003 エクセルの質問です。 表の並び替えをマクロで行いたいのですが、マクロ記憶を使ってもできません。 コーディング、教えていただけますか? | A | B | C | D | E | F 1| ヘッダー部 2|man_id |企業id |支店id |交渉id |担当id | 明細データ 3| 4| 5| 6| 7| 8| …… こんな感じで、 ソート対象範囲 A3:F65536 ソート優先順 A B C D E あまり上手に表現できていないかもしれません。 不明点があればご指摘下さい、補足させていただきます。 よろしくお願いします。
- エクセルVBAで範囲内での位置取得(行&列)
Sub test() Set Rng = Range("B2:E7") Rng.Cells(2, 2).Select End Sub これで、範囲Rng内では2行/2列目となるC3セルが選択されます。 では、C3セルが、範囲Rng内で何行/何列目であるかを取得するにはどのように記述すればよいのでしょうか? Rng.Cells(2, 2).Rowは、当たり前ですが、3になってしまいます。
- エクセルVBAで範囲内での位置取得(行&列)
Sub test() Set Rng = Range("B2:E7") Rng.Cells(2, 2).Select End Sub これで、範囲Rng内では2行/2列目となるC3セルが選択されます。 では、C3セルが、範囲Rng内で何行/何列目であるかを取得するにはどのように記述すればよいのでしょうか? Rng.Cells(2, 2).Rowは、当たり前ですが、3になってしまいます。
- エクセルVBAで対応する表の数値を取得したいのですか・・・
こんばんは。教えていただけるでしょうか。 表形式で表現したかったのですが、無理のようでしたので、下のように表しました。 二つのシート[売上データ][原価表]があります。 [売上データ]にはランダムに各支店で売り上げた商品名がデータとしてあります。この[売上データ]のL列の「原価」に支店ごとに原価の違う原価の値を入れていきたいのですが、どのようにすればいいでしょうか。 支店ごとに違う原価の値は「原価表」のBからF列に商品名ごとに表になっています。 たとえば、[売上データ]のA列に“商品A”という商品が、J列の支店名に“札幌”とあったとすると、 [原価表]のA列の中から商品名を探して、B列の札幌の列から“商品A”に対応する原価の値を探して、[売上データ]のL列(原価)に順に入れていくというようにしたいのですがさっぱりわかりません。関数でもできると思うのですが、それも私には難しくわかりません。どなたか教えていただけるでしょうか。よろしくお願いします。 [売上データ] A1 商品名 B1 項目a C1 項目b ・ ・ ・ J1 支店名 ・ L1 原価 [原価表] A1 商品名 B1 札幌 C1 東京 D1 名古屋 E1 大阪 F1 福岡
- ベストアンサー
- オフィス系ソフト
- reprogress
- 回答数3
- VBから起動したEXCELの表示設定
いつもお世話になります。VB2005、EXCEL2003です。 表題のようにVBからExcelを起動して、VB上のデータを送りつけて表示します。この時、Excelの列の幅、行の高さ、セルの表示形式を通貨、パーセントスタイルなど、VB上で指定しておくことができないものなのでしょうか? あるいは、あらかじめ項目など要求する表示形式を決めたExcelに、VBよりデータのみ送りつけることができててもよいのですが。 以上、可能であればご教授願います。
- ベストアンサー
- Visual Basic
- kumasan38
- 回答数3
- 自動返信メールは、どうやって送られてくる?
先日、メールマガジンを送ったら、 「自動返信メール」として、2通返ってきました ★このメールは送信頂いた方に【自 動】で 返 信 しています。 という文から本文が始まって、 「ただいまビッダーズアフィリエイトに参加中です。」 「楽天アフィリエイト参加中!」 という2件が入っていました。 これは、個人のメールソフトの設定で出来るんでしょうか?それともサーバの機能を使っていたりするんでしょうか? 素朴な疑問ですが、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- papapapapapapa
- 回答数3
- エクセル マクロ 複数のシート間で、セルの組み合わせがマッチしない行を、別シートへ移動する方法教えてください!!
Sheet1には今月の、Sheet2には先月の顧客NO.、会社名、商品名、金額データがあります。Sheet1にはエリア情報がありますが、Sheet2にはありません。 これらエリア情報を除く4つのセルの内容、全てマッチしている行はそのままで、1つでも違う組み合わせのあるものがあれば、Sheet3ヘ移動したいのですが。。 つまり今月新しく上がってきたもののみを行ごと、別のシートに移動できればと思います。 下記のイメージです。 <Sheet1> 今月分 No. 会社 商品 金額 エリア 123 ABC商事 ペン ¥500 新宿区 456 DEFコープ ノート ¥200 渋谷区 789 GHI DVD ¥30000 中野区 113 UFP CD ¥25000 港区 <Sheet2> 先月分 No. 会社 商品 金額 155 XXX クリップ ¥4000 456 DEFコープ ノート ¥200 113 UFP CD ¥25000 <Sheet3> 今月NEW分 123 ABC商事 ペン ¥500 新宿区 789 GHI DVD ¥30000 中野区 どなたか分かる方いらっしゃいますか? 教えてください!!
- 締切済み
- Visual Basic
- cygnet
- 回答数4
- Excel2007 FREQUENCY関数(データ配列、区間配列)
エクセルでデータ集計をしています。 度数分布を出したいので、FREQUENCY関数を使おうとしています。 ただ、データの選択と区間の選択をした後、 CtrlとAltとEnterの3つのキーを同時に押したのですが、 計算セルのすべてに {=FREQUENCY(C2:C45158,B45160:B45173)} と出る場合と、計算セルの一番上のセルは =FREQUENCY(C2:C45158,B45160:B45173) となっていて、以下、 =FREQUENCY(C3:C45159,B45161:B45174) =FREQUENCY(C4:C45160,B45162:B45175)・・・ という具合に、計算式の前後に { } がなく、 しかも計算式の数字がひとつずつずれてしまう場合があります。 前者の場合は、区間のデータ個数が正しく表示されますが、 後者の場合の区間のデータ個数は、累計になってしまいます。 後者の場合でも、別計算で引き算により区間のデータ個数を 求めればよいのでしょうが、 同じ関数を用い、同じやり方でやっているのに、 どうして同じ結果(計算式)になってくれないのでしょうか? 何か良い方法はあるでしょうか?
- エクセル 条件付書式の使用法について
毎月の成績をA1、A2、A3、B1、B2・・・・と記録しています。 良い方からA1>A2>A3>B1>B2・・・です。 前月と比較して成績があがったセルは赤色にさがったセルは青色に 変更したいのですが、条件付書式で設定できず悪戦苦闘しております。 何か良い方法がありましたら教えて頂けませんでしょうか? 4月 5月 ・・・・ 1 A1 A1 ・・・・ 2 A2 A1 ・・・・ 3 B1 A2 ・・・・ 4 C3 B1 ・・・・ 5 A1 A2 ・・・・
- 初心者です。エクセルのマクロについてご指導ください。
はじめましてm(_ _)m 皆様のお知恵を拝借したく投稿させい頂きました。 最近エクセルのマクロとVBを覚え始めているのですが、どうしても詰まってしまい、どうしたら良いか悩んでいます。 内容は、既に入力されているワークシートのセルの中身がAならAのマクロ。セルの中身がBならBのマクロを実行と、条件を幾つかに分岐させたいのですが、どうすれば良いですか? 凄く簡単な事を質問しているのかもしれませんが、初心者の私にとって、どう記述して良いのかも検討がつきません。 お忙しいとは思いますが、是非ご指導くださいm(_ _)m
- ベストアンサー
- オフィス系ソフト
- Kaze_no_Ko
- 回答数4
- EXCELのグラフ
下のようにVBからExcel にデータを送りグラフを表示しています。 印刷プレビューを表示したときにグラフと表が表示されてしまいます。グラフだけを表示して表は表示をしたくないのですが どうすればいいのでしょうか お願いします。 Private Sub Command1_Click() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets.Add Dim i As Integer Dim j As Integer For i = 2 To 6 For j = 2 To 6 xlSheet.Cells(j, i) = CInt(71 * Rnd + 30) Next j Next i xlSheet.Cells(2, 1) = "国語" xlSheet.Cells(3, 1) = "数学" xlSheet.Cells(4, 1) = "英語" xlSheet.Cells(5, 1) = "社会" xlSheet.Cells(6, 1) = "体育" xlSheet.Cells(1, 2) = "石原" xlSheet.Cells(1, 3) = "小泉" xlSheet.Cells(1, 4) = "田中" xlSheet.Cells(1, 5) = "平沼" xlSheet.Cells(1, 6) = "森山" Dim MyChart As ChartObject Set MyChart = xlSheet.ChartObjects.Add(10, 100, 600, 330) With MyChart.Chart .SetSourceData xlSheet.Range("A1:F6"), xlColumns .Axes(xlValue).MaximumScale = 100 .Axes(xlValue).MajorUnit = 20 .HasTitle = True .ChartTitle.Text = "中間テスト結果" .ApplyDataLabels (xlDataLabelsShowValue) .Location xlLocationAsObject, xlSheet.Name End With xlApp.Visible = True With xlSheet.PageSetup .PaperSize = xlPaperA4 .Orientation = xlPortrait .LeftMargin = xlApp.CentimetersToPoints(2) .RightMargin = xlApp.CentimetersToPoints(2) .TopMargin = xlApp.CentimetersToPoints(2.5) .BottomMargin = xlApp.CentimetersToPoints(2.5) .HeaderMargin = xlApp.CentimetersToPoints(1) .FooterMargin = xlApp.CentimetersToPoints(1) End With xlSheet.PrintPreview Set MyChart = Nothing Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End Sub
- ベストアンサー
- Visual Basic
- aki08102001
- 回答数1