Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


210 / 3841 ページ ←次へ | 前へ→

【78251】BeforeDoubleClick のタブレットPCでの...
質問  hapisan  - 16/6/9(木) 15:31 -

引用なし
パスワード
   始めて質問させていただきます。

別サイトにも質問させていただいていますが、回答があるかわからないためこちらでも質問させていただきます。。

現在VBAで検討しているのが、セルをダブルクリックをするとクリックした時間(時間、分、秒)が自動で入力されるチェックシートを作成しています。もう一度ダブルクリックすると空白に戻る仕様です。

デスクトップタイプのPCにおいて、EXCEL2013のバージョンでは機能しているのを確認していますが、タブレットPC(EXCEL2013)で機能させようとした場合は、マクロで自動入力されるのではなく、通常のダブルクリック(タップ)と同じようにセルへの入力となってしまします。

現在VBAを始めたばかりで、そもそものコードに問題がある可能性やタブレットの設定の可能性も有り、原因が解らず手詰まりとなってしまっています。

解決方法についてご回答を宜しくお願いいたします。


・コードの内容

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)

  If Application.Intersect(Target, Range("D11:D260,L11:L260,R11:R260,T11:T260,AB11:AB260,AJ11:AJ260,AR11:AR260,
AZ11:AZ260,BH11:BH260,BP11:BP260,BX11:BX260,CF11:CF260,CN11:CN260,
CV11:CV260,DD11:DD260,DL11:DL260")) Is Nothing Then Exit Sub
  If Target = "" Then
   Target.NumberFormatLocal = "hh:mm:ss"
   Target = Now
  Else
   Target.ClearContents
  End If
  Cancel = True
 End Sub

・使用しているタブレットPC

NEC LaVie PC-TW708T1S WINDOWS 8.1
・ツリー全体表示

【78250】Re:2つのセルをマッチングして、同じ文字...
お礼  sasa  - 16/6/9(木) 11:06 -

引用なし
パスワード
   ▼βさん、γさん:

返信が遅くなってしまい、申し訳ありません。

なるほど、絶対に不可能ではないものの、
なかなか一筋縄ではいかないのですね…。

ですが、お2人の提示してくださった参考のURLのおかげで、
何となく方向性が見えて来た気がします。

まずはWordを使ったやり方のほうで、色々試してみようと思います。
(Word絡みのVBAに苦手意識があるので、まずはその意識改善からしなくてはいけません…笑)

ありがとうございました!
・ツリー全体表示

【78249】Re:2つのセルをマッチングして、同じ文字...
回答  γ  - 16/6/8(水) 22:49 -

引用なし
パスワード
   すでに適切な回答がございました。
追加で、ここも紹介しておきましょう。

[VBAやVBScriptで形態素解析を行う方法]
ht tp://qiita.com/mima_ita/items/bc2aeb060ee12d280d7b

Word利用の方法は精度は落ちますが、お手軽です。
・ツリー全体表示

【78248】Re:Excel2013グラフの操作
お礼  North  - 16/6/8(水) 13:48 -

引用なし
パスワード
   ▼マナ さん:
Insideleftでうまくいきました。
ありがとうございました。
・ツリー全体表示

【78247】Re:Excel2013グラフの操作
回答  マナ  - 16/6/7(火) 21:40 -

引用なし
パスワード
   ▼North さん:
Insideleftで位置調整をするとどうなりますか
・ツリー全体表示

【78246】Excel2013グラフの操作
質問  North  - 16/6/7(火) 16:27 -

引用なし
パスワード
   Excel2013です。
積み上げ縦棒グラフ(データテーブル有)のプロットエリアの位置を操作したいと考えています。

以下のようにした場合
Dim sSg As Single
sSg = ActiveSheet.ChartObjects(1).Chart.PlotArea.Left
ActiveSheet.ChartObjects(1).Chart.PlotArea.Left = sSg - 5
意図した結果にならず、グラフ全体のレイアウトも崩れてしまいます。

また、いったんデータテーブルなしとしても
 ActiveSheet.ChartObjects(1).Chart.SetElement (msoElementDataTableNone)
 sSg = ActiveSheet.ChartObjects(1).Chart.PlotArea.Left
 ActiveSheet.ChartObjects(1).Chart.PlotArea.Left = sSg - 5
 ActiveSheet.ChartObjects(1).Chart.SetElement (msoElementDataTableShow)
同様に意図した結果にならず、グラフのレイアウトも崩れてしまいます。

レイアウトを崩さずに、プロットエリアの位置を正しく変更するための、ご助言いただきたくお願いします。
・ツリー全体表示

【78245】Re:下一桁を1あげるマクロ
お礼  えり  - 16/6/7(火) 16:20 -

引用なし
パスワード
   みなさまありがとうございます。
返信が遅くなり申し訳ありません。
いただいたものを試したら上手くいきました。
作業効率が格段にあがります!
本当にありがとうございました!
・ツリー全体表示

【78244】Re:2つのセルをマッチングして、同じ文字...
発言  β  - 16/6/7(火) 13:49 -

引用なし
パスワード
   ▼sasa さん:

特に日本語というものは、その中を単語に分解するということが
もう、大変というか、完全なしょりというのは不可能に近いといわれていて
AIのような処理が必要になってくるようですね。

ht p://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1168864501

ただ(私は実際には使ったことはないのですが)Ms.Word の機能をVBAから呼び出して
使うことができるようです。
(ある程度までしかできないとは思いますが)

ht p://upa-pc.blogspot.jp/2015/04/word-vba-sentence-to-words.html

単語に分解してしまえば、あとはなんとでもなりますよね。

>
・ツリー全体表示

【78243】2つのセルをマッチングして、同じ文字列...
質問  sasa  - 16/6/7(火) 11:03 -

引用なし
パスワード
   2つのセルをマッチングして、同じ文字列に色を塗りたい

初めまして。
表題にある通り、2つのセルをマッチングして、
同じ単語があれば、その単語に色を塗るマクロを作成したいと考えています。

例としましては、

 A1セル 青森県産りんご60kg詰め合わせ    
 B1セル 青森県産の美味しいりんごです。60kgと納得の大容量です!産地直送です!

上記のような場合、B1セルの「青森県産」「りんご」「60kg」の部分を
赤字に塗るようなものです。

人の目で見た場合は、
A1セルは「青森県産」「りんご」「60kg」「詰め合わせ」という意味の、
4つの単語から形成されているんだな、というのが簡単に分かりますが、
マクロ側にしてみれば、単語という概念がそもそもありませんよね…?

だからといって、A1セルを1文字ずつ取り出してマッチングするのでは、
不要な文字(例でいう、B1セルの産地直送の「産」)も塗られてしまいます。


なので、そもそもこういった事が可能なのかどうか、
100%完璧ではなくても、出来る限り希望に見合った動作を実現するには、
どのようにするのが良いのか…。

マナーとして、少しでも何らかのコードを提示するべきであるのは重々承知しておりますが、
どういった手段を取ればいいのか、まったく思いつかない状態です…。

よろしければアドバイスを頂けますと幸いです。

どうぞよろしくお願いいたします。
・ツリー全体表示

【78242】Re:実行時エラー13 型が一致しません
発言  独覚  - 16/6/3(金) 15:12 -

引用なし
パスワード
   ▼助けて さん:
もしかして「数式」-「計算方法」の計算方法の設定が手動になっていませんか?

もし、手動になっているとコピー時に最初のセルの値がそのまま表示されるようになり
式を入力しなおすとその時点で計算しなおします。

計算方法の設定を自動にするとコピー時点で計算されるようになります。
・ツリー全体表示

【78241】Re:パワーポイントマクロとの連携
お礼  りった  - 16/6/3(金) 9:57 -

引用なし
パスワード
   回答ありがとうございます。

> ひとつは、パワーポイントからエクセルを起動して操作してやることです。
> パワーポイントやワードのVBAからエクセルVBAを操作するには、
> VBEの画面で「ツール」→「参照設定」でMicrosoft Excel 14.0 Object Library
> (数字はオフィスのバージョンによって異なります)にチェックを入れれば良いいです。

有難うございます。やってみます。

> どう考えたって、それは差込印刷の典型であって、
> そうするのが一番簡単なわけです。

そうなんでしょうね。(やったことは無いですが)

> プレゼンテーションでもないのに PowerPointを送りつけるほうが
> よほどどうかしてます。

同感です。

> そうしたことを求める人に注意してあげるべきです。

注意しても通る見込みが無く、関係が悪化するだけなのでしません。提出先は別会社ですし。
そもそも、「マニュアルでやるのが本来の有り方で、自動化してサボろうなんてけしからん」
って文化(宗教?)なので、相談するだけで危険なのです。
・ツリー全体表示

【78240】Re:FindとFindNextについて
お礼  SHIIN  - 16/6/3(金) 8:03 -

引用なし
パスワード
   ▼β さん:
>▼SHIIN さん:
>
>学校のほうに書きこんでおきました。

申し訳ありません。
ありがとうございます。
・ツリー全体表示

【78239】Re:FindとFindNextについて
発言  β  - 16/6/3(金) 7:56 -

引用なし
パスワード
   ▼SHIIN さん:

学校のほうに書きこんでおきました。
・ツリー全体表示

【78238】FindとFindNextについて
質問  SHIIN  - 16/6/3(金) 1:56 -

引用なし
パスワード
   For i = 2 To Lastrow1 ※Sheet1の最終行
Set fnd =Sheet2.Colmuns("N").Find(Sheet1.Cells(i,4))
でSheet2のN列をSheet1の入っている値で検索すると思うのですが、
その後、If文でNothingをどうするかという処理を入れるのですが、
FindとFindNextの仕様に関して、「検索の終端を検知できずループしてしまう」
というのを聞き、その場合、If文に入る前にFindの部分で永久ループしてしまう
気がしたのですが、実際はそうはなりませんでした。
これは仕様なのでしょうか?
・ツリー全体表示

【78237】Re:パワーポイントマクロとの連携
発言  γ  - 16/6/2(木) 20:32 -

引用なし
パスワード
   # 自宅からしかコメントできませんので、遅くなりました。

> パワーポイント側からエクセルマクロを呼べるのでしょうか?
> それが可能なら、件数取得関数と、n件目取得関数を作ればいいのかなと思いますが、
> byRefの引数は使えるのでしょうか?
> 例:public sub getListData(byVal iNo as long, byRef sItemNo as String, byRef sAddress as String)

既にコメントがありましたように、Office familyなので、お互いのオブジェクトを操作することが可能です。
リストを配列によみこんで、それを元に、繰り返し処理をすればいいだけです。

> 最悪、Excelでパワーポイントマクロのコードを作って、VBA エディタに貼り付けますが、それをやってしまうと他の人に作業を任せられなくなります。

え?じゃあ、何を質問しているのですか?

----------
> > Powerpointでなければならない必然性を説明してください。
> フォーマットがPowerpointで提供され、Powerpointファイルを提出する必要が有るからです。
回答ありがとうございました。
でもそれは質問するうえでの成り行きでしょうね。
そう言わないと質問にならないからでしょ?

だって、どう考えたって、それは差込印刷の典型であって、
そうするのが一番簡単なわけです。
プレゼンテーションでもないのに PowerPointを送りつけるほうが
よほどどうかしてます。そうしたことを求める人に注意してあげるべきです。

ですので、私は
PowerPointの操作マクロを提示しません。
まあ、できないと解釈して貰って結構です。

どなたかが回答を寄せていただけるかもしれません。(一度発言されてその後消されたので)
期待してお待ち下さい。
・ツリー全体表示

【78236】Re:パワーポイントマクロとの連携
回答  亀マスター  - 16/6/2(木) 20:09 -

引用なし
パスワード
   パワーポイントのフォーマットがどのようなものかよくわかってないのですが、エクセルのデータを取り込みたいということであれば方法はあります。

ひとつは、パワーポイントからエクセルを起動して操作してやることです。
パワーポイントやワードのVBAからエクセルVBAを操作するには、VBEの画面で「ツール」→「参照設定」でMicrosoft Excel 14.0 Object Library(数字はオフィスのバージョンによって異なります)にチェックを入れれば良いいです。

この状態で、
Dim Xls As New Excel.Application
とすれば、Xlsを使ってエクセルを操作できます。

ただし、外部へ配布するなら、参照設定がうまくいかないことがあるので、参照設定は使わず、
Dim Xls As Object
Set Xls = CreateObject("Excel.Application")
とした方がいいでしょう。


もう一つの方法は、ADO接続でエクセルファイルをデータベースファイルとして扱うことです。これも参照設定を使う方法と使わない方法がありますが、私はADOを使ったことがないので、詳しくはわかりません。
・ツリー全体表示

【78235】Re:パワーポイントマクロとの連携
発言  りった  - 16/6/2(木) 11:26 -

引用なし
パスワード
   回答有難うございます。

> Powerpointでなければならない必然性を説明してください。
フォーマットがPowerpointで提供され、Powerpointファイルを提出する必要が有るからです。
Wordでの提出は、お願いしてもまず通りません。

現状、Wordの差し込み印刷も分かってません。調べたらわかるのかもしれませんが。
・ツリー全体表示

【78234】Re:パワーポイントマクロとの連携
発言  γ  - 16/6/1(水) 20:22 -

引用なし
パスワード
   詳しく聞かないといけないのかもしれませんが、
普通は Wordの「差し込み印刷」でする作業ではないですか?
powerpointマクロも書けるだろうが、
Wordのそれなら、ツールになっているからマクロすら不要です。
一度調べてみてはどうでしょうか。

もし勘違いなら、Powerpointでなければならない必然性を説明してください。
・ツリー全体表示

【78233】Re:ファイルの削除
回答  りった  - 16/6/1(水) 19:12 -

引用なし
パスワード
   こういうことですか?

Sub test()
  Dim sFullPath As String
  Dim iWbCnt As Long
  Dim wb As Workbook
  Dim wbDel As Workbook

  iWbCnt = 0
  For Each wb In Workbooks   ' 開いてる全てのワークブックについて処理する
    Select Case wb.Name   ' ワークブックの名前で分岐
    Case "PERSONAL.XLSB"   ' 個人用マクロブックの場合は処理無し
    Case "PERSONAL.XLS"   ' 個人用マクロブックの場合は処理無し(Excel2007以上)
    Case ThisWorkbook.Name  ' 本ファイルと同じ名前の場合
      iWbCnt = iWbCnt + 1
    Case Else
      iWbCnt = iWbCnt + 1
      sFullPath = wb.Path & "\" & wb.Name ' 削除するためにフルパス保持
      Set wbDel = wb
    End Select
  Next

  If iWbCnt <> 2 Then
    MsgBox "ファイルを二つだけ開いた状態で実行してください。"
    Exit Sub
  End If

  '#######################################
  Range("D9:G10").Select
  With Selection.Font
    .Name = "MS P明朝"
    .Size = 14
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = xlAutomatic
  End With
  Range("D9:G10").Select
  '#######################################

  wbDel.Close False ' ファイルを閉じる
  Kill sFullPath   ' ファイルを削除する

End Sub
・ツリー全体表示

【78232】Re:下一桁を1あげるマクロ
発言  β  - 16/6/1(水) 16:22 -

引用なし
パスワード
   ▼独覚 さん:

>=LEFT(A1,LEN(A1)-1)&VALUE(RIGHT(A1,1))+1
>これだと
>123499 --> 1234910
>になってしまいませんか?

ひゃぁ!おっしゃる通りです。(汗)

要は、繰り上がりをするのかしないのかを質問したんですが
その際に不慣れな数式を使ってしまって墓穴を掘りましたね・・・・
・ツリー全体表示

210 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free