Excel VBA質問箱 IV

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

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


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

【76408】Re:★データの上書きを回数制限したい
お礼  さんた  - 14/11/26(水) 16:43 -

引用なし
パスワード
   あ、そうだったんですね!!
すみません。。。消してしまいまして。。。

次回からそのように致します。アドバイスいただきありがとうございました。
・ツリー全体表示

【76407】Re:★データの上書きを回数制限したい
発言  マルチーズ  - 14/11/26(水) 16:24 -

引用なし
パスワード
   何故向こうを消したのだろうか?

単に向こうとこちらで「どこそこにも同じ質問をしています」とすればいいだけだと思うが。
・ツリー全体表示

【76406】Re:★データの上書きを回数制限したい
回答  さんた  - 14/11/26(水) 16:15 -

引用なし
パスワード
   すみませんでした。
ルールを知らず・・・
以後気をつけます。
・ツリー全体表示

【76405】Re:★データの上書きを回数制限したい
発言  マルチーズ  - 14/11/26(水) 16:11 -

引用なし
パスワード
   ここの掲示板の基本方針から。

>マルチポストについて
>別のサイト(掲示板)にまったく同じ目的の投稿をすることを、一般に「マルチポスト」といいます。
>当質問箱では、マルチポストは原則認めています。
>つまり、ほかのサイトで質問したことをこのサイトで質問してもかまわないということです。

>しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。
>そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を書いてください。
>質問しっぱなし、というのはモラルに反します。
>「解決したからいいや」というのではありません。

>また、マルチポストを明示的に禁止しているサイトとのマルチポストをしてはいけません。
・ツリー全体表示

【76404】★データの上書きを回数制限したい
質問  さんた  - 14/11/26(水) 10:55 -

引用なし
パスワード
    エクセルでA列から順にデータが
 永遠に自動入力される状態で、それを
 10件までいったら11件目をA列に
 上書きさせたいんですけど、、、
 なにか良いやりかたってご存知ですか・・・?
・ツリー全体表示

【76403】Re:特定セルの列・行を求める
お礼  亜矢  - 14/11/23(日) 10:25 -

引用なし
パスワード
   ▼カリーニン さん:
>Findメソッドで完全一致で検索してはいかがでしょう?
>
>ht tp://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_find.html
>
>行や列を取得したいのなら、見つかったセルの行。列番号を取得します。
>
>行の場合
>c.Row
>
>列の場合
>c.Column
ありがとうございました。参考になりました。解決しました。
・ツリー全体表示

【76402】Re:特定セルの列・行を求める
発言  カリーニン  - 14/11/23(日) 8:42 -

引用なし
パスワード
   Findメソッドで完全一致で検索してはいかがでしょう?

ht tp://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_find.html

行や列を取得したいのなら、見つかったセルの行。列番号を取得します。

行の場合
c.Row

列の場合
c.Column
・ツリー全体表示

【76401】特定セルの列・行を求める
質問  亜矢  - 14/11/23(日) 8:08 -

引用なし
パスワード
   よろしくお願いします。
シート上のある特定の数字(たとえば5とか)が入っているの列と行を求める方法を教えてください
下記のプログラムでシート1のA5に"5"を入力して時にRR(行No)とCC(列No)
を求めたいと思います。
  For Each C In Worksheets("sheet1").Range("D3:CE62")
       If C.Value Like Range("A5") Then
        RR =
        CC =
        MsgBox RR & "と" & CC
       
       End If
  Next C   
・ツリー全体表示

【76400】Re:VBAでシート削除後の自動保存
発言  γ  - 14/11/22(土) 13:39 -

引用なし
パスワード
   手元で同様の処理をしてみましたが、事象が再現できません。
別の要因(例えばファイルそのものに異常が発生している)では?

そもそもですが、シートを特定して削除、保存ということなら、
一回限りの処理ですよね。
マクロにする必要ありますか?
・ツリー全体表示

【76399】VBAでシート削除後の自動保存
質問  boss  - 14/11/22(土) 8:59 -

引用なし
パスワード
    VBAでワークシートを削除後、自動保存 ⇒ 自動終了 させても
うまく保存されていない様で、そのファイルを起動させると
エクセル自体がエラー強制終了してしまします。
 どうしたらうまくいくのでしょうか?

 エクセルは2000です。

コードはシート2に書いてあり、シート1を削除します。
Worksheets("Main").Delete

ブックを保存します。
ActiveWorkbook.Save

bookを閉じます。
ActiveWorkbook.Close


宜しくお願いします。
・ツリー全体表示

【76398】Re:不明ファイル
発言  γ  - 14/11/21(金) 7:38 -

引用なし
パスワード
   >これって何?
単なるひとりごとじゃないんですから、
コメントを下さった方に礼をするのが
普通じゃないですか?
・ツリー全体表示

【76397】Re:不明ファイル
発言  kanabun  - 14/11/18(火) 18:58 -

引用なし
パスワード
   ▼なにこれ さん:
>ファイルを処理した後にたまに同じファイル名に
>
>~$
>
>が頭についたファイルが勝手に生成されているときがあります。
>
>これって何?

他の掲示板でも質問があるようです。
ht tps://social.technet.microsoft.com/Forums/windows/ja-JP/01c78d86-9e99-4409-b828-8f8dd3f5b94f?forum=w7itprogeneralja
・ツリー全体表示

【76396】不明ファイル
質問  なにこれ  - 14/11/18(火) 15:25 -

引用なし
パスワード
   ファイルを処理した後にたまに同じファイル名に

~$

が頭についたファイルが勝手に生成されているときがあります。

これって何?
・ツリー全体表示

【76395】Re:フォルダが開かれているかどうか
お礼  はてな  - 14/11/18(火) 15:03 -

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

試してみます。

▼独覚 さん:
>▼はてな さん:
>標準モジュールに記載してください。
>Sheet1のA1セルに記入されているパスがファイルエクスプローラーで開かれているかをチェックします。
>
>「Sub DirChk()」の
>>  If CHK_FLG Then
>>    MsgBox "開いてない"
>>  Else
>>    MsgBox "開いてる"
>>  End If
>に実際に行いたい処理を入れてください。
>また、今は大文字・小文字の区別をしないようにしています。
>区別させたい場合は
>>'      If CHK_DIR = CHK_Collection(Loop_CNT) Then  '大文字(A)と小文字(a)を区別する
>>      If StrConv(CHK_DIR, vbUpperCase) = StrConv(CHK_Collection(Loop_CNT), vbUpperCase) Then
>部分のコメントを逆にしてください。
>なお、「Function getOpenDirList() As Collection」のほうは
>
>ht tp://grayskybluesea.wordpress.com/2010/05/14/vba%E3%81%A7%E3%80%81%E9%
>96%8B%E3%81%84%E3%81%A6%E3%81%84%E3%82%8B%E3%83%95%E3%82%A9%E3%83%AB%E3%83%
>80%E3%83%91%E3%82%B9%E3%82%92%E5%85%A8%E3%81%A6%E5%8F%96%E5%BE%97%E3%81%99%
>E3%82%8Bfunction/
>
>
>を元にしています。
>(ほとんどそのままですが)
>
>Sub DirChk()
>
>  Dim CHK_DIR     As String
>  Dim CHK_FLG     As String
>  Dim CHK_Collection As Collection
>  Dim CHK_DIR_CNT   As Integer
>  Dim Loop_CNT    As Integer
>
>  CHK_DIR = Worksheets("Sheet1").Range("A1")
>
>'  パスの最後に"\"があれば削除する
>  If Right(CHK_DIR, 1) = "\" Then
>    CHK_DIR = Left(CHK_DIR, Len(CHK_DIR) - 1)
>  End If
>  
>  Set CHK_Collection = getOpenDirList()
>  CHK_FLG = True
>  
>  CHK_DIR_CNT = CHK_Collection.Count
>  
>  If CHK_DIR_CNT > 0 Then
>    For Loop_CNT = 1 To CHK_DIR_CNT
>'      If CHK_DIR = CHK_Collection(Loop_CNT) Then  '大文字(A)と小文字(a)を区別する
>
>      If StrConv(CHK_DIR, vbUpperCase) = StrConv(CHK_Collection(Loop_CNT), vbUpperCase) Then
>        CHK_FLG = False
>        Exit For
>      End If
>    Next
>  End If
>  
>  If CHK_FLG Then
>    MsgBox "開いてない"
>  Else
>    MsgBox "開いてる"
>  End If
>  
>End Sub
>
>
>Function getOpenDirList() As Collection
>  Dim s    As String
>  Dim res   As New Collection
>  Dim sh   As Object
>  Dim wcobj  As Object
>  Dim wobj  As Object
>  Dim result As String
>  Dim i    As Integer
>
>'オブジェクトの取得
>  Set sh = CreateObject("Shell.Application")
>
>'コレクションオブジェクトの取得
>  Set wcobj = sh.Windows
>
>  For Each wobj In wcobj
>'Internt Explorerが開いているファイルは除外する。
>    If (wobj.FullName Like "*Explorer.EXE") = True Then
>      s = wobj.LocationURL
>'オブジェクトフォルダは除外する
>      If Left(s, 10) <> "file:///::" Then
>' 最初の"file:///"を取り除く
>        If s Like "file:///?:*" Then
>
>'ローカル
>          s = Right(s, Len(s) - Len("file:///"))
>        Else
>
>'サーバ
>          s = Right(s, Len(s) - Len("file:"))
>        End If
>
>' 左から1文字ずつチェックして文字列を置き換えていく
>        result = ""
>        For i = 1 To Len(s)
>          Select Case Mid(s, i, 1)
>            Case "/"
>              result = result & "\"
>            Case "%"
>              result = result & Chr(CInt("&H" & Mid(s, i + 1, 2)))
>              i = i + 2
>            Case Else
>              result = result & Mid(s, i, 1)
>          End Select
>        Next
>        res.Add (result)
>
>      End If
>    End If
>  Next
>  Set getOpenDirList = res
>End Function
・ツリー全体表示

【76394】Re:フォルダが開かれているかどうか
回答  独覚  - 14/11/18(火) 14:37 -

引用なし
パスワード
   ▼はてな さん:
標準モジュールに記載してください。
Sheet1のA1セルに記入されているパスがファイルエクスプローラーで開かれているかをチェックします。

「Sub DirChk()」の
>  If CHK_FLG Then
>    MsgBox "開いてない"
>  Else
>    MsgBox "開いてる"
>  End If
に実際に行いたい処理を入れてください。
また、今は大文字・小文字の区別をしないようにしています。
区別させたい場合は
>'      If CHK_DIR = CHK_Collection(Loop_CNT) Then  '大文字(A)と小文字(a)を区別する
>      If StrConv(CHK_DIR, vbUpperCase) = StrConv(CHK_Collection(Loop_CNT), vbUpperCase) Then
部分のコメントを逆にしてください。
なお、「Function getOpenDirList() As Collection」のほうは

ht tp://grayskybluesea.wordpress.com/2010/05/14/vba%E3%81%A7%E3%80%81%E9%
96%8B%E3%81%84%E3%81%A6%E3%81%84%E3%82%8B%E3%83%95%E3%82%A9%E3%83%AB%E3%83%
80%E3%83%91%E3%82%B9%E3%82%92%E5%85%A8%E3%81%A6%E5%8F%96%E5%BE%97%E3%81%99%
E3%82%8Bfunction/


を元にしています。
(ほとんどそのままですが)

Sub DirChk()

  Dim CHK_DIR     As String
  Dim CHK_FLG     As String
  Dim CHK_Collection As Collection
  Dim CHK_DIR_CNT   As Integer
  Dim Loop_CNT    As Integer

  CHK_DIR = Worksheets("Sheet1").Range("A1")

'  パスの最後に"\"があれば削除する
  If Right(CHK_DIR, 1) = "\" Then
    CHK_DIR = Left(CHK_DIR, Len(CHK_DIR) - 1)
  End If
  
  Set CHK_Collection = getOpenDirList()
  CHK_FLG = True
  
  CHK_DIR_CNT = CHK_Collection.Count
  
  If CHK_DIR_CNT > 0 Then
    For Loop_CNT = 1 To CHK_DIR_CNT
'      If CHK_DIR = CHK_Collection(Loop_CNT) Then  '大文字(A)と小文字(a)を区別する

      If StrConv(CHK_DIR, vbUpperCase) = StrConv(CHK_Collection(Loop_CNT), vbUpperCase) Then
        CHK_FLG = False
        Exit For
      End If
    Next
  End If
  
  If CHK_FLG Then
    MsgBox "開いてない"
  Else
    MsgBox "開いてる"
  End If
  
End Sub


Function getOpenDirList() As Collection
  Dim s    As String
  Dim res   As New Collection
  Dim sh   As Object
  Dim wcobj  As Object
  Dim wobj  As Object
  Dim result As String
  Dim i    As Integer

'オブジェクトの取得
  Set sh = CreateObject("Shell.Application")

'コレクションオブジェクトの取得
  Set wcobj = sh.Windows

  For Each wobj In wcobj
'Internt Explorerが開いているファイルは除外する。
    If (wobj.FullName Like "*Explorer.EXE") = True Then
      s = wobj.LocationURL
'オブジェクトフォルダは除外する
      If Left(s, 10) <> "file:///::" Then
' 最初の"file:///"を取り除く
        If s Like "file:///?:*" Then

'ローカル
          s = Right(s, Len(s) - Len("file:///"))
        Else

'サーバ
          s = Right(s, Len(s) - Len("file:"))
        End If

' 左から1文字ずつチェックして文字列を置き換えていく
        result = ""
        For i = 1 To Len(s)
          Select Case Mid(s, i, 1)
            Case "/"
              result = result & "\"
            Case "%"
              result = result & Chr(CInt("&H" & Mid(s, i + 1, 2)))
              i = i + 2
            Case Else
              result = result & Mid(s, i, 1)
          End Select
        Next
        res.Add (result)

      End If
    End If
  Next
  Set getOpenDirList = res
End Function
・ツリー全体表示

【76393】フォルダが開かれているかどうか
質問  はてな  - 14/11/18(火) 12:08 -

引用なし
パスワード
   フォルダを開くのはネットで見つけました。

Shell "C:\Windows\Explorer.exe " & fdname, vbNormalFocus

開いていたら開く必要がないのですが、
フォルダが開かれているかどうか確認するにはどうしたらいいですか?
・ツリー全体表示

【76392】Re:エラー値がある場合にもグラフの「近...
発言  γ  - 14/11/15(土) 19:43 -

引用なし
パスワード
   ▼htnk さん:
>教えていただいたページにあるコードすべての動作確認はしておりませんが、
>ActiveSheet.ChartObjects("グラフ 1").Chart
>.SeriesCollection(1).Trendlines(1).DataLabel.Text
>の値取得は Excel2010 でできましたので、
>「VBA を使えば近似曲線の係数を得ることが可能」と言えそうですね。

おお、それは朗報です。
私の手元でも同じコードを実行し、エラーになったのでその旨書いたのですが、
こちら側の問題ですね。
関連urlを書いて置いてよかった。

># なぜ ReadOnly でも良いからセル関数から取得できないのか...
必要度に関するMSの判断ということなんでしょうか。
・ツリー全体表示

【76391】Re:エラー値がある場合にもグラフの「近...
お礼  htnk  - 14/11/15(土) 15:49 -

引用なし
パスワード
   教えていただいたページにあるコードすべての動作確認はしておりませんが、
ActiveSheet.ChartObjects("グラフ 1").Chart
.SeriesCollection(1).Trendlines(1).DataLabel.Text
の値取得は Excel2010 でできましたので、
「VBA を使えば近似曲線の係数を得ることが可能」と言えそうですね。

VBA が使える場合はスムーズに作れそうです。ありがとうございました。

# なぜ ReadOnly でも良いからセル関数から取得できないのか...
・ツリー全体表示

【76390】Re:[無題]
お礼  ペンネーム船長  - 14/11/14(金) 0:11 -

引用なし
パスワード
   γさん
ご丁寧な解説有難う御座います。
今回も取り消し線のときも、マクロの記録に頼っていたのが誤りの原因でした。
Selectすると実行速度が遅くなることは知っていましたが、万能で使えるという変な思い込みをしていました。Selectした方が確実に実態を掴んだような間違った安心感から抜けていませんでした。正に>「人間がそれを手作業でやる」イメージそのものでした。ご紹介していただいたVBA解説HPでもSelectは出来るだけ使うのを止めましょうとありましたね。これを機会にSelectから卒業したいと思います。
VBAとは長い間付き合っていますが、基本の知識が抜けているようで、なかなかスラスラと行きません。大学時代コンピューターの授業は大の苦手だったのですが、会社の仕事でどうしてもVBAの知識が必要になり、本の事例を写しながらやってきました。ある程度やると面白味が分り、それ以来独学で見様見まねでやってきました。まだまだ続けてゆきたいと思っています。稚拙な質問があるかも知れませんが宜しくお願いします。
・ツリー全体表示

【76389】Re:メール新規作成画面 CC欄へ表示
お礼  ゆき  - 14/11/13(木) 9:52 -

引用なし
パスワード
   ▼γ さん:
どうもありがとうがとうございました。
こちらもやってみようと思います。
ほんとに初心者なので一つ一つ勉強です。


>xlDialogSendMailの引数は
>recipients、subject、return_receipt
>であるとヘルプに書かれているので、たぶんCC:はセットできないでしょう。
>
>シートにハイパーリンクを張って、それをクリックしてはどうですか?
>Sub test()
>  ActiveSheet.Hyperlinks.Add _
>  Anchor:=Selection, _
>  Address:="mailto:aaa@xxx.xx.xx&;cc=bbb@xxx.xx.xx&;Subject=title&body=本文", _
>  TextToDisplay:="セルに表示する文字列"
>End Sub
>こうしておけば、固定の相手への定期的なメールには使えます。
>ただし添付ファイルを自動でつけることはできませんが。
>
>本格的にするなら、既にご指摘のとおりの手法がありますが、
>まったくの初心者なら、OutlookとかCDOとかの操作は、もっと先の課題でしょう。
>
># 情報提供になんら異論を挟むつもりはありませんし、
>#「まったくの初心者」などというのは幅のある言葉と承知していますが。
・ツリー全体表示

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