Excel VBA質問箱 IV

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

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


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

【75073】Re:vbaのコード解説
発言  γ  - 13/12/9(月) 7:54 -

引用なし
パスワード
   こんにちは。
まず、それらのコードとあなたの関係を説明されたほうがよろしいかと。
どんな由来のコードで、何を目的としたコードなのか、
そして、あなたは何をしようとしているのかということです。
イベントプロシージャとそうでないものが混在しているし、
イベントプロシージャとして引数が異常なものもあるようです。

理解するには、まずきちんとインデントをつけることから始めたほうが
いいでしょうね。これだと理解しにくいでしょう。
・ツリー全体表示

【75072】Re:連続印刷について
お礼  爽茶  - 13/12/8(日) 23:02 -

引用なし
パスワード
   HARAさんご教示ありがとうございます。
プレビューを一つずつ確認することは可能ですが、
データ全体を一括プレビューすることが出来ないかなぁと考えております。


▼HARA さん:
>> 印刷する前にダイアログボックスを開きプリンタの種類、プレビュー確認をしたいです。
>  .printpreview
>   .PrintOut        
>でボタンを押したらどうでしょうか
・ツリー全体表示

【75071】vbaのコード解説
質問  爽茶  - 13/12/8(日) 22:57 -

引用なし
パスワード
   このような質問はよくないと考えます。

現在、一からインターネットで検索しながら

調べているのですが、難しすぎます(泣き)

もし、知っているコードがありましたら、その部分だけでも解説いただけないでしょうか?

よろしくお願いいたします。

Private Sub Workbook_BeforeClose() 'ワークブックを閉じる前の処理

Application.DisplayAlerts = False '下記でデータを削除する際に確認メッセージを省略する。
On Error Resume Next     'エラーが発生するとエラーの発生した次の行から処理を続行します。
Sheets("Form").Visible = True
Sheets("Form").Delete
Application.Calculation = xlAutomatic 'エクセルの自動計算

End Sub

Private Sub Workbook_Open()  'ワークブックを開くときの処理

ActiveWindow.Caption = ActiveSheet.Name
Application.DisplayStatusBar = True 'ステータスバーにメッセージを表示
ActiveWindow.DisplayHorizontalScrollBar = True
Application.StatusBar = "e-mail: " 'メッセージ内容

End Sub

Private Sub Workbook_SheetActivate()

'B2 印刷の有効桁数 F2 フォーカス行 P2 ステップ数 AA2 改行

On Error Resume Next     'エラーが発生するとエラーの発生した次の行から処理を続行します。

  If Left$(ActiveSheet.Name, 4) = "Form" Then
      Sheets("印刷Data").ShowAllData

    If Len([S2]) = 0 Or Len([V2]) = 0 Or [P2] > 1 Then 'S2,V2の文字列が0かP2の文字列が1以上の場合
    
    Else
     Sheets("印刷Data").[A1].AutoFilter [Y1], [V2]


    End If

  End If

On Error GoTo 0


If ActiveSheet.Name = "印刷Data" Then
  ActiveSheet.Rows(Sheets(ActiveWindow.Caption).[F2]).Select
  Exit Sub
End If

ActiveWindow.Caption = ActiveSheet.Name

End Sub


Private Sub Workbook_SheetBeforeRightClick(ByVal Target As Range)

If ActiveSheet.Name <> "Data" Then Exit Sub
If Len(Target) = 0 Then Exit Sub

[2:65536].Sort Target

End Sub

Public Sub FmChange(ByVal Target As Range)

If Left$(ActiveSheet.Name, 4) <> "Form" Then Exit Sub
  If Target.Row = 1 Then
    Application.EnableEvents = False
    Application.Undo
    Application.EnableEvents = True
    Exit Sub

  End If

If Target.Count > 1 Then Exit Sub


If Target.Column = 1 Then

Application.EnableEvents = False
Target = ""
Target.Select
MsgBox "A列への入力はできません" & Space(20), vbExclamation, ""
Application.EnableEvents = True

Exit Sub

End If


Select Case Target

  Case [AA2]
  
  ActiveSheet.ResetAllPageBreaks
  
  If ([AA2] < 5) Or ([AA2] > [B2] + 3) Then
  
  Application.EnableEvents = False
  [AA2] = 0
  Application.EnableEvents = True
  
  Exit Sub
  
  End If
  
Application.ScreenUpdating = False
ActiveWindow.SelectedSheets.HPageBreaks.Add Rows([AA2].Value)
Application.ScreenUpdating = True
  
  Exit Sub
  
  
  Case [B2]
    ActiveSheet.PageSetup.PrintArea = "$4:$" & [B2] + 3

  Case [S2]

      If [P2] > 1 Then
        [S1].Select
        Exit Sub
      End If


  [V2:X2] = ""
  If Len([S2]) = 0 Then Exit Sub
  [V2].Activate
  SendKeys "%{Down}"

  Case [V2]

Application.ScreenUpdating = False

      If [P2] > 1 Then

      [S1].Select
         Exit Sub
      End If

    Application.EnableEvents = False

    On Error Resume Next
    Sheets("印刷Data").ShowAllData

    Sheets("印刷Data").[A1].AutoFilter [Y1], [V2]
    On Error GoTo 0
    Application.EnableEvents = True


Dim L As Long
On Error Resume Next
L = Application.Match([V2], Sheets("印刷Data").Columns([Y1]), 0)
If Err Then [S1].Select: Exit Sub
[F2] = L

End Select

End Sub

Public Sub FmSelectionChange(ByVal Target As Range)

'If Flg() <> 7 Then Exit Sub

If Left$(ActiveSheet.Name, 4) <> "Form" Then Exit Sub

Dim L As Long, LL As Long

On Error Resume Next
L = [F2]
If Err Then Exit Sub


  Select Case Target.Address

    Case [J2].Address
      Application.ScreenUpdating = False

LblMins:
      L = L - [P2]
      If L < 2 Then
        L = 1
      ElseIf Sheets("印刷Data").Rows(L).RowHeight = 0 Then
        GoTo LblMins
      End If

      [F2] = L
      [K2].Activate

    Case [L2].Address

      Application.ScreenUpdating = False
On Error Resume Next
      LL = Sheets("印刷Data").Cells.SpecialCells(xlCellTypeConstants).CurrentRegion.Rows.Count
If Err Then LL = 0
On Error GoTo 0


LblPlus:
      L = L + [P2]

      If L > LL Then
        L = 1

      ElseIf Sheets("印刷Data").Rows(L).RowHeight = 0 Then
        GoTo LblPlus

      End If

      [F2] = L
      [K2].Activate


    Case [S2:U2].Address, [V2:X2].Address
      If [P2] > 1 Then
MsgBox "ステップ2以上のシートではフィルタは無効です" & Space(20), , ""
        [S1].Select
         Exit Sub

      End If

      SendKeys "%{Down}"

    Case [S1].Address
      On Error Resume Next
      Sheets("印刷Data").ShowAllData
      Application.EnableEvents = False
      [S2,V2] = ""
      Application.EnableEvents = True

      On Error GoTo 0


  Case [B2].Address
    ActiveSheet.PageSetup.PrintArea = "$4:$" & [B2] + 3

    Case [H2].Address
      [F2] = 2

    Case [H3].Address
      [F2] = Sheets("印刷Data").Cells.SpecialCells(xlCellTypeConstants).CurrentRegion.Rows.Count

    Case [I1].Address
      If [P2] = 1 Then [U3].Activate

    Case [V3].Address
      [K2].Activate
  
    Case [J1].Address
       Application.Dialogs(xlDialogPrint).Show
      
       'ActiveWindow.SelectedSheets.PrintOut
       
       
    Case [L1].Address

      ActiveWindow.SelectedSheets.PrintPreview
      [K2].Activate

    Case [L3].Address
      Call RenPre

    Case Else

  End Select

End Sub


Private Sub RenPre()

Application.Calculation = xlManual

If [Y1] = 0 Or [P2] <> 1 Then

      On Error Resume Next
      Sheets("印刷Data").ShowAllData

      On Error GoTo LblErr

ElseIf Application.CountIf(Sheets("印刷Data").Range(Chr(64 + [Y1]) & ":" & Chr(64 + [Y1])), "=" & [V2]) = 1 Then
      ActiveWindow.SelectedSheets.PrintPreview
      Exit Sub
End If

Application.ScreenUpdating = False
[K2].Activate
Dim L As Long, LL As Long, LLL As Long, S As String
LL = Sheets("印刷Data").Cells.SpecialCells(xlCellTypeConstants).CurrentRegion.Rows.Count
LLL = 0
Application.DisplayAlerts = False


Dim LStp As Long, LRws As Long

LStp = [P2]
LRws = [B2]


For L = 2 To LL Step LStp
  If Sheets("印刷Data").Rows(L).RowHeight > 0 Then
    LLL = LLL + 1

  End If
Next


If LLL < 1 Then GoTo LblErr
If LLL * [B2] > 65500 Then GoTo LblErr

If LLL > 301 Then
If MsgBox("データ件数が300件を超えます。多少時間がかかります。" & Space(20) & vbCrLf & _
      "処理を継続しますか?", vbDefaultButton2 + vbYesNo + vbQuestion, "") = vbNo Then Exit Sub
End If


On Error Resume Next
Sheets("Form").Visible = True
Sheets("Form").Delete
On Error GoTo LblErr

Application.EnableEvents = False
ActiveSheet.Copy ActiveSheet

With Rows("4:" & 3 + LRws)
  .Replace "フォーカス", "Value(A:A)"

On Error Resume Next
  .AutoFill Rows("4:" & 3 + LRws * LLL), xlFillCopy
On Error GoTo 0
End With


ActiveWindow.SelectedSheets.HPageBreaks.Add Rows(LRws + 4)

LLL = 0


If LStp = 1 Then

    For L = 2 To LL Step LStp
      If Sheets("印刷Data").Rows(L).RowHeight > 0 Then

      If [AA2] <> 0 Then ActiveWindow.SelectedSheets.HPageBreaks.Add Rows(LLL * LRws + [AA2])
      
      LLL = LLL + 1
      Range("A" & (LLL - 1) * LRws + 4 & ":A" & LLL * LRws + 4) = L
      
      
      ActiveWindow.SelectedSheets.HPageBreaks.Add Rows(LLL * LRws + 4)

      End If
    Next
Else

      For L = 2 To LL Step LStp
        If Sheets("印刷Data").Rows(L).RowHeight > 0 Then

        If [AA2] <> 0 Then ActiveWindow.SelectedSheets.HPageBreaks.Add Rows(LLL * LRws + [AA2])
        LLL = LLL + 1
        Range("A" & (LLL - 1) * LRws + 4 & ":A" & LLL * LRws + 4) = (LLL - 1) * LStp + 2
        ActiveWindow.SelectedSheets.HPageBreaks.Add Rows(LLL * LRws + 4)

        End If
      Next

End If


Application.Calculation = xlAutomatic
With Cells
  .Copy
  .PasteSpecial xlValues
  Application.CutCopyMode = False
End With


[A:A].ClearContents

ActiveSheet.PageSetup.PrintArea = "4:" & 3 + LRws * LLL

[A1].Select

  ActiveWindow.FreezePanes = False
  [1:3].Delete

  ActiveWindow.View = xlPageBreakPreview
  ActiveWindow.Zoom = 75


ActiveWindow.SelectedSheets.PrintPreview

ActiveSheet.Name = "Form"


Sheets("Form").Visible = xlSheetVeryHidden

Application.EnableEvents = True


Exit Sub

LblErr:

Application.Calculation = xlAutomatic
Application.EnableEvents = True


End Sub
・ツリー全体表示

【75070】Re:連続印刷について
発言  HARA  - 13/12/7(土) 8:29 -

引用なし
パスワード
   > 印刷する前にダイアログボックスを開きプリンタの種類、プレビュー確認をしたいです。
  .printpreview
  .PrintOut        
でボタンを押したらどうでしょうか
・ツリー全体表示

【75069】連続印刷について
質問  爽茶  - 13/12/6(金) 23:42 -

引用なし
パスワード
   仕事の書類作成を簡素化したいと考えております。

現在提出してい報告書のフォームが固定となっております。

そこで、簡素化したいと思いVBAを使用し印刷ボタンを作成しました。

1. VlookUP関数を使い、ページ番号を変えることにより報告書の内容を
  変化させています。(入力データからすべてジャンプ)

2. For〜Nextを使用ページ番号を変えて印刷をするBVAを作成しました。
  (初歩かもしれませんが・・・・VBAを勉強したことはなく、インターネットの力を使いました(笑)

知りたいこと

 印刷する前にダイアログボックスを開きプリンタの種類、プレビュー確認をしたいです。


下記は連続印刷をするために作成しました。
For No = 2 To a
With Worksheets("報告書")        
 .Range("U1").Value = No  
  .PrintOut        
End With      
Next No
・ツリー全体表示

【75068】Re:VBAでの指定文字列の消去について
発言  γ  - 13/12/6(金) 9:24 -

引用なし
パスワード
   ▼seaser さん:
先頭にある 数字(何桁でも)+ "." を消去したいということですか?

・その文字列を"."でSplitする。
・配列が返るので、
 もし、第一要素がIsNumericで真を返すなら、該当すると判断して、
・第二要素で置き換える。
ということでどうですか?
・ツリー全体表示

【75067】Re:VBAでの指定文字列の消去について
回答  ウッシ  - 13/12/5(木) 10:15 -

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

こんにちは

文字列の先頭2桁が「1.」の場合だけ処理すればいいのでは?

> ExcelでCSV形式の一問一答ファイルを作成しているのですが,VBA初心者の為行き詰まってしまい,検索していたところこちらのサイトにたどり着きました.
>
>下のような文字列で,先頭の「1.」にあたる箇所を消去したいです
>
> 1.日本で一番長い川は? 信濃川
>
>しかし,その箇所下のように2桁になってしまうとうまく消去できません.
>
> 11.熊本県を流れる日本三大急流の一つは? 球磨川
>
> 宜しければ,ご教授お願い致します.
・ツリー全体表示

【75066】VBAでの指定文字列の消去について
質問  seaser E-MAIL  - 13/12/5(木) 6:50 -

引用なし
パスワード
   ExcelでCSV形式の一問一答ファイルを作成しているのですが,VBA初心者の為行き詰まってしまい,検索していたところこちらのサイトにたどり着きました.

下のような文字列で,先頭の「1.」にあたる箇所を消去したいです

 1.日本で一番長い川は? 信濃川

しかし,その箇所下のように2桁になってしまうとうまく消去できません.

 11.熊本県を流れる日本三大急流の一つは? 球磨川

宜しければ,ご教授お願い致します.
・ツリー全体表示

【75065】片仔廣
発言  香港宝和堂海狗丸 E-MAIL  - 13/12/4(水) 17:10 -

引用なし
パスワード
   虫草九鞭王:www.newtrendsshop.com/p297.html
金色起点:www.newtrendsshop.com/p9.html
プロコミルスプレーprocomil spray:www.newtrendsshop.com/p217.html
藏秘男宝:www.newtrendsshop.com/p294.html
蔵秘男宝:www.newtrendsshop.com/p294.html
奇果:www.newtrendsshop.com/p358.html
片仔廣:www.newtrendsshop.com/p355.html
藏秘男宝:www.newtrendsshop.com/p294.html
奇果:www.newtrendsshop.com/p358.html
好漢哥:www.newtrendsshop.com/p691.html
片仔廣:www.newtrendsshop.com/p355.html
力多精:www.newtrendsshop.com/p103.html
力多精:www.newtrendsshop.com/p103.html
華佗壮陽丹:www.newtrendsshop.com/p436.html
藏秘男宝:www.newtrendsshop.com/p294.html
蔵秘男宝:www.newtrendsshop.com/p294.html
奇果:www.newtrendsshop.com/p358.html
好漢哥:www.newtrendsshop.com/p691.html
片仔廣:www.newtrendsshop.com/p355.html
力多精:www.newtrendsshop.com/p103.html
藏秘男宝:www.newtrendsshop.com/p294.html
蔵秘男宝:www.newtrendsshop.com/p294.html
奇果:www.newtrendsshop.com/p358.html
藏秘男宝:www.newtrendsshop.com/p294.html
奇果:www.newtrendsshop.com/p358.html
片仔廣:www.newtrendsshop.com/p355.html
好漢哥:www.newtrendsshop.com/p691.html
力多精:www.newtrendsshop.com/p103.html
片仔廣:www.newtrendsshop.com/p355.html
力多精:www.newtrendsshop.com/p103.html
・ツリー全体表示

【75064】片仔廣
質問  香港宝和堂海狗丸 E-MAIL  - 13/12/4(水) 17:07 -

引用なし
パスワード
   片仔廣:www.yahookanpou.com/product/pzhrg.html
藏秘男宝:www.yahookanpou.com/product/zangminanbao.html
蔵秘男宝:www.yahookanpou.com/product/zangminanbao.html
金威龍:www.yahookanpou.com/product/jinweilong.html
威龍:www.yahookanpou.com/product/jinweilong.html
イリュウ:www.yahookanpou.com/product/jinweilong.html
野生虫草王:www.yahookanpou.com/product/ysccw.html
東方神龍生精:www.yahookanpou.com/product/shengjing.html
奇果:www.yahookanpou.com/product/qg.html
好漢哥:www.yahookanpou.com/product/haohange.html
力多精:www.yahookanpou.com/product/liduojing.html
片仔廣:www.yahookanpou.com/product/pzhrg.html
藏秘男宝:www.yahookanpou.com/product/zangminanbao.html
蔵秘男宝:www.yahookanpou.com/product/zangminanbao.html
五夜神:www.yahookanpou.com/product/tbwys.html
香港宝和堂海狗丸:www.yahookanpou.com/product/baohethgw.html
australia 袋鼠精:www.yahookanpou.com/product/weiwei.html
虎力士:www.yahookanpou.com/product/hulishi.html
壮陽一号:www.yahookanpou.com/product/zyyh.html
マカ[MACA]まか:www.yahookanpou.com/product/maca.html
USA GOOD MAN:www.yahookanpou.com/product/USAGOOD.html
ビビッドビリリティ:www.yahookanpou.com/product/vivid.html
vivid:www.yahookanpou.com/product/VividXXL.html
奇果:www.yahookanpou.com/product/qg.html
好漢哥:www.yahookanpou.com/product/haohange.html
力多精:www.yahookanpou.com/product/liduojing.html
片仔廣:www.yahookanpou.com/product/pzhrg.html
藏秘男宝:www.yahookanpou.com/product/zangminanbao.html
蔵秘男宝:www.yahookanpou.com/product/zangminanbao.html
奇果:www.yahookanpou.com/product/qg.html
・ツリー全体表示

【75063】Re:BookもModuleも閉じるには
お礼  にしもり  - 13/12/3(火) 10:22 -

引用なし
パスワード
   ▼HARA さん:
>▼にしもり さん:
>>こんにちは。
>>
>Workbooks("feedback.xlsm").SAVE
>application.Quitでは

できました!
こういうときQuitを使うのですね。
ありがとうございました。
・ツリー全体表示

【75062】Re:WebQuery自動再計算手動の設定
発言  Excel2002愛好家  - 13/12/2(月) 22:58 -

引用なし
パスワード
   皆さん 今晩は。自己解決しました。
投稿すると、刺激になって解決できるものですね。投稿して良かったです。

kanabunさんの Delete がヒントになって、いろいろ試していると、
クエリの切断が、下記の(1)でできました。

Sheets("作業").Cells.Delete
でシートが完全にリセットされ、クエリの切断ができたのかな。

  'Sheets("作業").Cells.Clear       'カット
  'Sheets("作業").Cells.QueryTable.Delete 'カット
では、クエリの残骸が残っていて処理に時間がかかっていたのだと思います。


Sub set終値() 
  
   省略
   Application.ScreenUpdating = False
  'Application.Calculation = xlManual   'カット

  省略

  'Application.Calculation = xlAutomatic  'カット
   Application.ScreenUpdating = True

   省略

End Sub

Function Get終値(code As Variant)

  省略
  
  With ActiveSheet.QueryTables.Add(Connection:=webURL, Destination:=Range("A1"))
    .WebSelectionType = xlEntirePage    '全て取り込み  '削除 表のみ取り込み 2.
    .WebFormatting = xlWebFormattingNone
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .Refresh BackgroundQuery:=False
  End With

  省略

  'Sheets("作業").Cells.Clear       'カット
  'Sheets("作業").Cells.QueryTable.Delete 'カット

   Sheets("作業").Cells.Delete  '(1)これでクエリを切断できました

End Function
・ツリー全体表示

【75061】Re:BookもModuleも閉じるには
発言  HARA  - 13/12/2(月) 20:50 -

引用なし
パスワード
   ▼にしもり さん:
>こんにちは。
>
Workbooks("feedback.xlsm").SAVE
application.Quitでは
・ツリー全体表示

【75060】BookもModuleも閉じるには
質問  にしもり  - 13/12/2(月) 13:00 -

引用なし
パスワード
   こんにちは。

feedback.xlsmというbookの中のModule1を開いてカーソルを置き、sub/ユーザーフォームの実行ボタン を押してマクロを実施しています。
完了後にBookもModuleも閉じるため下記の記述をくわえました。

Workbooks("feedback.xlsm").Close

ところがModule1が閉じません。
BookもModuleも閉じるにはどう記述すればいいでしょうか。
・ツリー全体表示

【75059】Re:WebQuery自動再計算手動の設定
質問  Excel2002愛好家  - 13/12/1(日) 8:52 -

引用なし
パスワード
    kanabunさんおはようございます。投稿ありがとうございます。

    .Delete   'クエリを切断●

を試してみましたが、処理時間は改善されませんでした。

これは(3)と同じ内容かな?と思うのですが

  Sheets("作業").Cells.QueryTable.Delete    '(3)


色々試しているなかで、下記のことが分かっています。
'ESCでプログラムを止めて、(1)(2)のコメントアウトを入れ替えるとプロジェクトがリセットされ、速くなった

劇的に速くなります。

ただ、残念なことに、この修正をしても、ファイルを保存して、再度開いて使うと、元の木阿弥で
処理時間が数十分かかってしまいます。
毎回プログラムをESCで中断し、1.2.のコメントアウトを入れ替えるのは絶対にしたくないです。

マクロでできる良い解決策があれば助かります。よろしくお願いします。


  'Sheets("作業").Select
  '             'ESCで止めて、(1)(2)のコメントアウトを入れ替えるとプロジェクトがリセットされ、速くなった
  With ActiveSheet.QueryTables.Add(Connection:=webURL, Destination:=Range("A1"))          '(1) ●書き換えで 1分28秒
  'With Sheets("作業").QueryTables.Add(Connection:=webURL, Destination:=Sheets("作業").Range("A1"))   '(2) ●書き換えで 1分30秒
    .WebSelectionType = xlEntirePage    
    .WebFormatting = xlWebFormattingNone
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .Refresh BackgroundQuery:=False
    .Delete   'クエリを切断●
  End With
  '


  Sheets("作業").Cells.Clear
  'Sheets("作業").Cells.QueryTable.Delete    '(3)
  Set r = Nothing
End Function
・ツリー全体表示

【75058】Re:WebQuery自動再計算手動の設定
発言  kanabun  - 13/12/1(日) 7:41 -

引用なし
パスワード
   ▼Excel2002愛好家 さん:

あてずっぽですみませんけど、


>Function Get終値(code As Variant)
>    .WebPreFormattedTextToColumns = True
>    .WebConsecutiveDelimitersAsOne = True
>    .Refresh BackgroundQuery:=False
     .Delete 'クエリを切断
>  End With

としたらどうなります?
・ツリー全体表示

【75057】WebQuery自動再計算手動の設定
質問  Excel2002愛好家  - 13/11/30(土) 15:14 -

引用なし
パスワード
   WebQuery の際、再計算手動に設定しても、「再計算」が入ってしまいます。
取得データが少ないときは1分以内で終わっていたのですが、130銘柄の取得では数十分かかってしまいます。

Application.Calculation = xlManual
を使っても再計算してしまいます。

Googleで調べても、なかなか解決につながるページを見つけることができなかったので質問をさせてください。

Sub set終値()
Dim t As Single
Dim RightEnd As Range
Dim cnt As Long
Dim y, myCode  
  
  Sheets("株価入力").Select  
  t = Timer
  Application.ScreenUpdating = False
  Application.Calculation = xlManual   '再計算手動コでも40分以上 コメントアウトでも40分以上

  Sheets("作業").Select
  With Sheets("株価入力")
    myCode = .Range("A4", .Cells(.Rows.Count, 1).End(xlUp)).Value  '銘柄コードのセル群
    Set RightEnd = .Cells(4, 256).End(xlToLeft)     '前日終値のTopCell
    y = RightEnd.Resize(UBound(myCode, 1), 1).Value   '前日終値
    For Each v In myCode
      cnt = cnt + 1
      Select Case v
      Case ""
        y(cnt, 1) = Empty      '終値
      Case Else
        y(cnt, 1) = Get終値(v)   '終値
      End Select
    Next
  End With
  '
  RightEnd.Resize(cnt, 1).Value = y        '終値

  Application.Calculation = xlAutomatic    '再計算自動 1.
  Application.ScreenUpdating = True
  Sheets("株価入力").Select
  t = Timer - t
  MsgBox Int(t / 60) & " 分 " & (t Mod 60) & " 秒 " & " かかりました"
End Sub

Function Get終値(code As Variant)
Dim webURL As String
Dim r As Range

  webURL = "URL;ht  tp://stocks.finance.yahoo.co.jp/stocks/detail/?code=" & code
  
  'Sheets("作業").Select
  With ActiveSheet.QueryTables.Add(Connection:=webURL, Destination:=Range("A1"))
    .WebSelectionType = xlEntirePage    '全て取り込み  '削除 表のみ取り込み 2.
    .WebFormatting = xlWebFormattingNone
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .Refresh BackgroundQuery:=False
  End With
  '
  '---'終値取り込み
  Set r = FindCell("詳細情報")
  If r Is Nothing Then
    Get終値 = Empty
  Else
    Get終値 = c.Offset(-1, 2).Value 
  End If
  '
  Sheets("作業").Cells.Clear
  Sheets("作業").Cells.QueryTable.Delete
  Set r = Nothing
End Function

Public Function FindCell(key As String) As Range
  Set FindCell = Sheets("作業").Columns("A:A").Find(What:=key, LookAt:=xlPart)
End Function
・ツリー全体表示

【75056】Re:文字列検索をするには
お礼  Sugano  - 13/11/22(金) 21:15 -

引用なし
パスワード
   正しく動作してくれますので、問題解決です。

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

【75055】Re:ユーザー辞書(IME辞書ツール)の操作
お礼  ひめさゆり  - 13/11/22(金) 9:36 -

引用なし
パスワード
   ウッシさんありがとうございました。
早速試してみました。★★★位でした。
・ツリー全体表示

【75054】Re:オートシェープの位置のセル座標を取...
回答  ウッシ  - 13/11/21(木) 10:12 -

引用なし
パスワード
   ▼りった さん:

こんにちは

大量に有るとレスポンスが不安ですけど、

Sub test()
  Dim s As Shape
  Const 検索文字列 As String = "123"
  On Error Resume Next
  For Each s In ActiveSheet.Shapes
    If s.TextFrame.Characters.Caption Like "*" & 検索文字列 & "*" Then
      If Err.Number = 0 Then
        MsgBox s.Name
      Else
        MsgBox Err.Description & "---" & s.Name
        Err.Clear
      End If
    End If
  Next
End Sub

こんな感じで大丈夫ですか?

オートフィルタとか設定してあると、ActiveSheet.Shapes は絞込み用の三角マーク
とかも全部対象になってしまうので対処しないとダメですけど。
・ツリー全体表示

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