end-u の回答履歴

全1157件中121~140件表示
  • Excel VBA リストボックス

    Excelで管理している台帳にあるデータをユーザーフォームで呼び出して更新作業をしたいと考えています。完全に我流でやってきており、まわりくどい記述等あるかもしれませんが、ご了承ください。 また開示しにくい情報が多々あるため、記述のごく一部を抜粋しています。 添付の記述は、Excelのマスタシートにある会社名のマスタをリストボックスに取り込み、 一覧にあるデータを選択状態にしようとしています。 D_会社名にはtestという会社名が入力されており、y_会社名にもtestがセットされるはずなのに 何故か””になってしまいます。 これは何が原因なのでしょうか。

  • 【Excel2003】テキストBOXを認識しない

    VBAを使用してテキストボックス内のフォントを統一するプログラムを書きました。 でも同じシート内でもテキストBOXと認識してフォントを変更してくれるときと、 テキストBOXと認識しなくてフォントを変更してくれないときがあります。 何故でしょうか?分かる方教えてください。 プログラムは以下のよう書きました。 --------------- Dim tbx As TextBox For Each tbx In ActiveSheet.TextBoxes tbx.Font.Name = "MS 明朝" Next ---------------

  • エクセル2010でのBeforePrintイベント

    これまでエクセル2003を使っていました。 Private Sub Workbook_BeforePrint(Cancel As Boolean) MsgBox "印刷指示されました。" End Sub このコードで、PrintでもPrintPreviewでもイベントが発生しました。 ところが、今エクセル2010でためしたところ、Previewではイベントが発生しません。印刷を指示しないかぎり発生しないようです。 では、新たにBeforePrintPreview?ができたのかと思いましたが見当たりません。 2010でPrintPreviewでイベントを発生させる方法はありますか? あるいは2003で、PrintとPrintPreviewのイベントを別に取得する方法はありますか? 教えてください。

  • 2010でShiftキーを使っても自動実行が動く

    Office 2010 で Sub Auto_Open() が入ったブックがあります。ExcelヘルプではShiftキーを押しながらExcelを開くと自動実行しないと書いてありますが2003では確認できましたが2010では自動実行してしまいます。 ほかに設定があるのでしょうか

  • 2010でShiftキーを使っても自動実行が動く

    Office 2010 で Sub Auto_Open() が入ったブックがあります。ExcelヘルプではShiftキーを押しながらExcelを開くと自動実行しないと書いてありますが2003では確認できましたが2010では自動実行してしまいます。 ほかに設定があるのでしょうか

  • エクセル2010でのBeforePrintイベント

    これまでエクセル2003を使っていました。 Private Sub Workbook_BeforePrint(Cancel As Boolean) MsgBox "印刷指示されました。" End Sub このコードで、PrintでもPrintPreviewでもイベントが発生しました。 ところが、今エクセル2010でためしたところ、Previewではイベントが発生しません。印刷を指示しないかぎり発生しないようです。 では、新たにBeforePrintPreview?ができたのかと思いましたが見当たりません。 2010でPrintPreviewでイベントを発生させる方法はありますか? あるいは2003で、PrintとPrintPreviewのイベントを別に取得する方法はありますか? 教えてください。

  • 2010でShiftキーを使っても自動実行が動く

    Office 2010 で Sub Auto_Open() が入ったブックがあります。ExcelヘルプではShiftキーを押しながらExcelを開くと自動実行しないと書いてありますが2003では確認できましたが2010では自動実行してしまいます。 ほかに設定があるのでしょうか

  • VBAで変数の数/変数名を動的に変化させる

    こんにちは。プログラミング初心者です。 VBAで質問です。 以下のようなシートがあるとします。  A | B | C | D | E | F 1 シート選択 | (プルダウンリストで選択します) 2 果物シート | りんご | みかん | ばなな 3 教科シート | 国語 | 算数 | 理科 | 社会 | 図工 | 体育 4 乗物シート | 車 | 電車 | 船 | 飛行機 そして、以下のようにB1セルのプルダウンで選択されたシート名をA列で検索してヒットした行の文字列を配列に格納します。 selectedSheet = cells(1, 2).Value for i = 2 To 4 if cells(i , 1).Value = selectedSheet Then rightRow = Cells(i, Columns.Count).End(xlToLeft).Column Redim rowArray(rightRow - 1) for j = 1 To rightRow rowArray(j - 1) = cells(i, j).Value Next j Exit For End if next i 次に、配列に格納された文字列をB1のプルダウンで選択されたシートの1行目で、配列の各要素を検索して、それぞれが何列目にあるかを調べます。 sheetName = rowArray(0) sheetObject = Worksheets(sheetName) lastColumn = sheetObject.Cells(1, Columns.Count).End(xlToLeft).Column Set searchRange = sheetObject.Range((cells(1, 1), cells(1, lastColumn)) col_01 = Find(rowArray(1), searchRange)  'りんごを検索してます col_02 = Find(rowArray(2), searchRange)  'みかんを検索してます col_03 = Find(rowArray(3), searchRange)  'バナナを検索してます その後、これで得られた列情報をもとにいろいろと処理をするのですが、上記のように「col_01 = ***」のような書き方ができるのは、あらかじめ「果物シート」がセラばれることが分かっている場合のみです。 「教科シート」が選択された場合は、「col_**」の「**」の部分が「6」まである必要がありますし、「乗物シート」の場合は変数が4つになります。 このように必要となる変数の数が動的に変化する場合に変化する場合、どのように処理したらよいでしょうか。 最初の「for i = 2 To 4」のループとのころで、ヒットしたシート名によって、それぞれ別のSubやFunctionを呼ぶというのは避けたいです。 というのも、VBAをまったく知らないユーザでも上記テーブルの「果物シート」行に「メロン」を足したり、「乗物シート」の「飛行機」を削除することで、処理対象列を自由にカスタマイズできるようにしてあげたいのです。 (あるいは、乗物シートの下に「肩書シート | 社長 | 部長| 係長」のような行を挿入して、処理対象のシートそのものを増やしたり) どなたか、よい方法をご存知でしたら、教えていただけないでしょうか。 よろしくお願いいたします。

  • VBAで変数の数/変数名を動的に変化させる

    こんにちは。プログラミング初心者です。 VBAで質問です。 以下のようなシートがあるとします。  A | B | C | D | E | F 1 シート選択 | (プルダウンリストで選択します) 2 果物シート | りんご | みかん | ばなな 3 教科シート | 国語 | 算数 | 理科 | 社会 | 図工 | 体育 4 乗物シート | 車 | 電車 | 船 | 飛行機 そして、以下のようにB1セルのプルダウンで選択されたシート名をA列で検索してヒットした行の文字列を配列に格納します。 selectedSheet = cells(1, 2).Value for i = 2 To 4 if cells(i , 1).Value = selectedSheet Then rightRow = Cells(i, Columns.Count).End(xlToLeft).Column Redim rowArray(rightRow - 1) for j = 1 To rightRow rowArray(j - 1) = cells(i, j).Value Next j Exit For End if next i 次に、配列に格納された文字列をB1のプルダウンで選択されたシートの1行目で、配列の各要素を検索して、それぞれが何列目にあるかを調べます。 sheetName = rowArray(0) sheetObject = Worksheets(sheetName) lastColumn = sheetObject.Cells(1, Columns.Count).End(xlToLeft).Column Set searchRange = sheetObject.Range((cells(1, 1), cells(1, lastColumn)) col_01 = Find(rowArray(1), searchRange)  'りんごを検索してます col_02 = Find(rowArray(2), searchRange)  'みかんを検索してます col_03 = Find(rowArray(3), searchRange)  'バナナを検索してます その後、これで得られた列情報をもとにいろいろと処理をするのですが、上記のように「col_01 = ***」のような書き方ができるのは、あらかじめ「果物シート」がセラばれることが分かっている場合のみです。 「教科シート」が選択された場合は、「col_**」の「**」の部分が「6」まである必要がありますし、「乗物シート」の場合は変数が4つになります。 このように必要となる変数の数が動的に変化する場合に変化する場合、どのように処理したらよいでしょうか。 最初の「for i = 2 To 4」のループとのころで、ヒットしたシート名によって、それぞれ別のSubやFunctionを呼ぶというのは避けたいです。 というのも、VBAをまったく知らないユーザでも上記テーブルの「果物シート」行に「メロン」を足したり、「乗物シート」の「飛行機」を削除することで、処理対象列を自由にカスタマイズできるようにしてあげたいのです。 (あるいは、乗物シートの下に「肩書シート | 社長 | 部長| 係長」のような行を挿入して、処理対象のシートそのものを増やしたり) どなたか、よい方法をご存知でしたら、教えていただけないでしょうか。 よろしくお願いいたします。

  • VBAで変数の数/変数名を動的に変化させる

    こんにちは。プログラミング初心者です。 VBAで質問です。 以下のようなシートがあるとします。  A | B | C | D | E | F 1 シート選択 | (プルダウンリストで選択します) 2 果物シート | りんご | みかん | ばなな 3 教科シート | 国語 | 算数 | 理科 | 社会 | 図工 | 体育 4 乗物シート | 車 | 電車 | 船 | 飛行機 そして、以下のようにB1セルのプルダウンで選択されたシート名をA列で検索してヒットした行の文字列を配列に格納します。 selectedSheet = cells(1, 2).Value for i = 2 To 4 if cells(i , 1).Value = selectedSheet Then rightRow = Cells(i, Columns.Count).End(xlToLeft).Column Redim rowArray(rightRow - 1) for j = 1 To rightRow rowArray(j - 1) = cells(i, j).Value Next j Exit For End if next i 次に、配列に格納された文字列をB1のプルダウンで選択されたシートの1行目で、配列の各要素を検索して、それぞれが何列目にあるかを調べます。 sheetName = rowArray(0) sheetObject = Worksheets(sheetName) lastColumn = sheetObject.Cells(1, Columns.Count).End(xlToLeft).Column Set searchRange = sheetObject.Range((cells(1, 1), cells(1, lastColumn)) col_01 = Find(rowArray(1), searchRange)  'りんごを検索してます col_02 = Find(rowArray(2), searchRange)  'みかんを検索してます col_03 = Find(rowArray(3), searchRange)  'バナナを検索してます その後、これで得られた列情報をもとにいろいろと処理をするのですが、上記のように「col_01 = ***」のような書き方ができるのは、あらかじめ「果物シート」がセラばれることが分かっている場合のみです。 「教科シート」が選択された場合は、「col_**」の「**」の部分が「6」まである必要がありますし、「乗物シート」の場合は変数が4つになります。 このように必要となる変数の数が動的に変化する場合に変化する場合、どのように処理したらよいでしょうか。 最初の「for i = 2 To 4」のループとのころで、ヒットしたシート名によって、それぞれ別のSubやFunctionを呼ぶというのは避けたいです。 というのも、VBAをまったく知らないユーザでも上記テーブルの「果物シート」行に「メロン」を足したり、「乗物シート」の「飛行機」を削除することで、処理対象列を自由にカスタマイズできるようにしてあげたいのです。 (あるいは、乗物シートの下に「肩書シート | 社長 | 部長| 係長」のような行を挿入して、処理対象のシートそのものを増やしたり) どなたか、よい方法をご存知でしたら、教えていただけないでしょうか。 よろしくお願いいたします。

  • エクセル VBA arrayについて

    arrayの使い方についてご教授をお願いします。 以下の記述はワークシートが3枚あり、それぞれの最終行を調べ、arrayに読み込んでいます。いつもは変数を3つ設定しシート毎に各変数にセットしているのですが、以下の簡単な記述を知る機会があり勉強をしています。なぜ各シートをループし、その都度ちゃんと最終行を読込んでいるのか教えて頂きたいと思います。 また他のホームページで解説等を見ると、最初からarrayの( )の中に複数の文字等が並んでおり、それを取出す使い方が書いてありますが、このように検索結果をarrayに読込む場合の( )の中は0を入れて置けばよいのでしょうか? 初心者のため、わかりずらい文で申し訳ありません。エクセル2000を使用しています。 Sub kk() Dim lastrow As Variant lastrow = Array(0, 0, 0, 0, 0) For m = 1 To 3 n = 1 Do While Sheets(m).Cells(n, 1) <> "" n = n + 1 Loop MsgBox n - 1 lastrow(m) = n - 1 Next End Sub 最終行の取得方法は他にもある事は理解しています。よろしくお願いします。

  • エクセルVBAの不思議な挙動?

    エクセル2003です。 ThisWorkbookには以下の記述があります。 Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name <> "Sheet1" Then Exit Sub If Range("A1").Value = "" Then MsgBox "A1が未入力です" Range("A1").Select Cancel = True End If Application.OnTime Now(), "ページ移動" End Sub 標準モジュールには以下の記述があります。 Sub ページ移動() Sheets("Sheet2").Select Range("A1").Select End Sub Sub プリント() ActiveWindow.SelectedSheets.PrintPreview End Sub これでSheet1を開いた状態でツールバーから印刷プレビュー指示をすると、A1セルが入力済みであればプレビュー画面を出し、プレビューを閉じればSheet2が表示されます。 ところが、同じ状態でツールバーからではなく、マクロ Sub プリント を実行すると、プレビュー画面にはなりますが、プレビューを閉じてもSheet1のままです。 なぜ、 Application.OnTime Now(), "ページ移動" が、有効にならないのでしょうか?

  • VBAでセル範囲の「名前の定義」の有無を取得

    エクセルのセル範囲(結合セル)にいろいろな名前を定義してあります。 名前の定義されたセル範囲を変更した場合、マクロが動くようにしたいのです。 ところが、名前の定義のないセルを変更すると 「実行時エラー1004、アプリケーション定義またはオブジェクトの定義のエラーです」 になってしまいます。 一応、下記のような方法で解決はできましたが、エラーで判断するのではなく、名前の定義の有無を取得して分岐させるのが正しい?やりかたなのではと思います。 ご教示いただけましたら幸いです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim x As String On Error Resume Next x = Target.Cells(1).Name.Name On Error GoTo 0 If x = "" Then Exit Sub Select Case Target.Cells(1).Name.Name Case "住所" Range("送付先住所").Value = Target.Value Case "氏名" Range("送付先氏名").Value = Target.Value End Select End Sub

  • VBA EXCELの並び替え機能

    WindowsXP Pro 32bit - Office2003 Pro SP3 の組合せの エクセルにVBAで、「Application.SendKeys ("%ds")」と記入し ボタンを押すと「並び替え」のダイヤログが表示されるように作成しました。 今回、同プログラムを Windows7 Pro 32bit - Office2003 Pro SP3 の組合せにて 使用したところ、無反応となりました。 どんな原因が考えられるでしょうか? 宜しくお願いします。

  • VBAのUserformのボタンからwebクエリ

    VBAのUserformのボタンを押すことによってwebクエリを取得という形を希望しているのですが、 以下のようにコードを設定した場合、Button1をクリックしただけではずっと”取得中”という文字が表示されるだけで何も動きはありません。 そこで、フォーム自体を×ボタンで消すと、その直後にwebクエリのデータが指定のシートに反映されます。 Private Sub CommandButton1_Click() 'Webクエリ作成 'WebSelectionType = xlAllTables With ActiveSheet.QueryTables.Add( _ Connection:="URL;http://www.yahoo.co.jp", _ Destination:=Worksheets("abc").Cells(1, 1)) .WebSelectionType = xlAllTables '既定値 .Refresh End With End Sub なぜフォームを消さないとシートに反映されないのでしょうか? ボタンを押すだけで即座に反映され、その後も作業を続けられるようにしたいので、方法を教えてください。 よろしくお願いします。

  • VBE画面の縦のスクロールバーがマウスホイールで動

    エクセル2003・vistaです。 VBE画面の縦のスクロールバーがマウスホイールで動きません。 エクセル2003・XP エクセル2007・win7 だったら、マウスホイールをグリグリしてスクロールバーを動かせます。 原因と対策を教えてください。 よろしくお願いします。

  • オブジェクトの選択(単一/複数選択、グループ)

    グラフを複数製作/修正するような作業を日常的に行っています また、そのグラフにテキストボックスが複数グループ化されていたりグラフが複数グループ化されていたりということもよくあります グラフの名前を与えるとそのグラフに一定の処理をするようなマクロを作ったときに 選択したオブジェクトに含まれるグラフオブジェクトの名前を上記マクロに渡してくれるような 仲立ちをするマクロがあればと思っております 1.単一選択/複数選択に対応 2.グラフオブジェクト以外が含まれていても無視するだけでエラー終了しない 3.グループ化されたオブジェクトがあればその中のグラフオブジェクトまで探す という動きを実現したく思っています エクセルのバージョンは2007(2003も利用することができる環境です) 現状ではシート上の全てのグラフに一括処理をするか 単一選択したグラフに処理をするかの二種類のマクロまで作ることができます

  • 時刻の差(経過時間)を横軸にしたグラフ

    A列に開始時刻、B列に狩猟時刻、C列にB-Aによる経過時間があります。 C列の書式は、ユーザー定義で「h:mm」となっており、経過時間が2:30などという形で表示されています。 このC列を横軸にして、散布図を作っているのですが、どうにもうまくいきません。 現状では、横軸が 全ての目盛りに 0:00 が表示されており、Y軸に選択した数値は、単に1行目から順にグラフ化されているだけになっています。 わかりにくくて、すみませんが、何卒よろしくお願いします。

  • EXCEL2010 コード表示方法

    エクセル2010マクロコード表示方法が不便になったように感じています。 今までEXCEL2003をつかってマクロを作っていたのですが、パソコン買い替えで WINDOWS7搭載、オフィスソフトエクセルも2010になりました。 エクセル2003では一度開いたコードを閉じてシートを表示させても、コード表示ボタンのクリック で前に開いたコードの表示に戻れますが、エクセル2010では前に開いたコードの表示に一発で戻れません、現在私が行っている操作では。 シートが表示されている状態で、開発タブ→コードの表示→モージュールの一覧が表示され→ 目的のモジュールを選択、という手順でコードを表示させています。 この状態からシートの表示にに戻り、再度コードを表示させようとすると、また上記の一連の操作を繰り返さなくてはなりません。エクセル2003のときはシートの表示に戻ってもコードの表示ボタン一発で前に表示させていたコードの表示に戻れます。 エクセル2003の時と同じ操作でコードを表示させる方法はないのでしょうか? ご教示宜しくお願いいたします。 デバッグ作業を行っているときには、非常に不便に思います。

  • マクロの実行時エラー'1004'が解消できません

    ushiushiです。 Excel2000でマクロを組んでいます。 ピポットテーブルで、合計欄を展開して、csvファイルを作成しようとしていますが、 展開するときに「実行時エラー'1004'」が出てどうしよう使用もありません。 デバックで、見てその続きを処理させるとその後は何事もなく動きます。 どこが悪いのか見当が付きませんので、すみませんが、お教え下さい。 よろしくお願い致します。 ---- macro ----- Range("表の左隅").Activate 'ピポットテーブルの左上にセルを移動 ActiveSheet.PivotTables("ピボットテーブル3").RefreshTable   'ピポットテーブル更新 '最終地点に移動 Selection.End(xlDown).Select '表の最下段に移動 Selection.End(xlToRight).Select '表の右端へ移動。ここで合計欄にセルが移動する 'データを展開 If Selection.Column < 255 Then  '更新時、データが無い場合セルが255列にいるかどうか確認 Selection.ShowDetail = True  '表を展開。ここでエラーが発生する Else GoTo owari           '表が無い場合は次の処理へ移動 End If ---- EOF ---- ---- Error messages ---- 実行時エラー'1004' RangeクラスのShowDetailプロパティを設定できません。 ---- EOF ----