Excel VBA質問箱 IV

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

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


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

【80746】Re:列挙型のメンバを文字列から特定する...
お礼  yasu  - 19/5/1(水) 0:05 -

引用なし
パスワード
   エクセルのシートを使って入力フォームのシート位置を特定していたので,データシートの管理も同じようにできたら,データ列の追加したときに便利だなと考えていました。やはり難しいようですね。
ありがとうございます。
・ツリー全体表示

【80745】Re:Excel2016のactivateとinitializeが機...
回答  hatena  - 19/4/29(月) 12:29 -

引用なし
パスワード
   Jakaさんから指摘がありますが、正しくは、


Private Sub UserForm_Initialize()


Private Sub UserForm_Activate()

ですね。1 とか 2 は不要です。

VBAエディタの上の左のドロップダウンから UserForm を選択して、
右のドロップダウンから nitialize または Activate を選択すれば、
自動で入力してくれますので、それを使えばミスは防げます。
・ツリー全体表示

【80744】Re:Excel2016のactivateとinitializeが機...
発言  Jaka  - 19/4/28(日) 2:37 -

引用なし
パスワード
   ああ、こっちもか。

private sub userform2_activate
・ツリー全体表示

【80743】Re:Excel2016のactivateとinitializeが機...
発言  Jaka  - 19/4/28(日) 2:36 -

引用なし
パスワード
   >private sub userform1_initialize()

ここ勝手に変えましたよね。
変えてはだめです。
・ツリー全体表示

【80742】Re:Excel2016のactivateとinitializeが機...
発言  γ  - 19/4/27(土) 22:55 -

引用なし
パスワード
   悪いですが、手打ちではなく、
VBE(エディター画面)のコードをそのままコピーしてもらえますか?
手打ちのミスと判別がつきません。
指摘しても、ああそれは本当は・・・でした、というのは無駄になるので。
・ツリー全体表示

【80741】Re:Excel2016のactivateとinitializeが機...
質問  a  - 19/4/27(土) 21:50 -

引用なし
パスワード
   基本モジュール
option explicit
public a as integer
ユーザーフォーム1
private sub userform1_initialize()
a = 0
end sub
private sub commandbutton(1から20)_click()
a = (1から20)
call 移行
end sub
private sub 移行()
Unload me
userform2.show
end sub
ユーザーフォーム2
private sub userform2_activate()
Label1.caption = a
end sub

です。activateのところをcommandbuttonにしたら正常に動作しました。
Label1.caption = a を、
Labe1.caption = aにしても、エラーが起きず、
ラベルの中が変化しません。(ここはactivateです。)
・ツリー全体表示

【80740】Re:Excel2016のactivateとinitializeが機...
発言  γ  - 19/4/27(土) 18:47 -

引用なし
パスワード
   private sub 移行
Unload me
userform2.show
end sub
これはどうやって実行しているのですか?
このへんの説明が抜けているように思います。
・ツリー全体表示

【80739】Re:private sub のコードはどうやって探...
発言  γ  - 19/4/27(土) 13:26 -

引用なし
パスワード
   ▼Taro さん:
>エクセルQ&Aサロンというところに初めて質問しました。
>バカにされるような回答ばかりで、そこでの質問は迷宮入りを選択して終了しました。
そうでしたか?

私もエクセルの学校でコメントをしましたが、
無駄なコメントだったなあと思っています。
結局のところ、VBE(エディター画面)に慣れていないことが
すべてですよね。
つまるところ「自分で良く探してください」で良かったかもしれません。

それに比べれば、エクセルQ&Aサロンで回答があった
リスキーダックさんの下記のコメントが
一番適切な回答だったと思います。

>そもそも何にも知らなそうなんで、入門サイトを閲覧する方が先だと思います。
>ht tps://tonari-it.com/vba-start-10minutes/
この動画はごらんになったのですか?
そうしていれば、もっと早く解決していたものと思います。
>バカにされるような回答
などと総括するのは考え違いもいいところです。
・ツリー全体表示

【80738】Re:Excel2016のactivateとinitializeが機...
発言  γ  - 19/4/27(土) 13:11 -

引用なし
パスワード
   なにかミスがあるんでしょうね。
コードを提示してみてはいかがですか?
それが無いと理由を当てるのは難しいですよ。
・ツリー全体表示

【80737】Excel2016のactivateとinitializeが機能...
質問  a  - 19/4/27(土) 11:49 -

引用なし
パスワード
   private sub 移行
Unload me
userform2.show
end sub
で開いたuserform2のactivateとinitializeが
機能しません。コマンドボタンに同じプログラムを
作ったら機能しました。
エラーを起こすように組み直しても、エラーが起きず、
完全に無視されています。
何がだめなんでしょう?
一応標準モジュールにoption explicit
publicで変数を作成しています。
・ツリー全体表示

【80736】Re:private sub のコードはどうやって探...
お礼  Taro  - 19/4/25(木) 16:44 -

引用なし
パスワード
   見つかりました。ありがとうございます。
・ツリー全体表示

【80735】Re:private sub のコードはどうやって探...
回答  よろずや  - 19/4/25(木) 16:07 -

引用なし
パスワード
   Excelのバージョンが記載されていないので、最新バージョンとして。

(1) 開発リボンは表示されてますか?

(2) 開発リボンの Visual Basic で、VBE 画面は開けましたか?

(3) VBE 画面のメニューで 表示→プロジェクト エクスプローラー を選択で
  プロジェクトは表示されますか?

(4) その中に 標準モジュール→Module1 というのがあったら、
  それをダブルクリックで見えるはずですが。
・ツリー全体表示

【80734】Re:Dictionaryでの値集計
お礼  永遠の超初心者  - 19/4/25(木) 10:00 -

引用なし
パスワード
   ありがとうございます。
初手のitem設定が間違っていたということを理解しました。
・ツリー全体表示

【80733】Re:シート複数選択印刷について
お礼  Hiroshi  - 19/4/25(木) 8:48 -

引用なし
パスワード
   マナさん

ありがとうございます。
思ってた通りの内容でした。
1か月悩んでいたものが解決できました。もっと勉強していきます。
・ツリー全体表示

【80732】Re:Dictionaryでの値集計
発言  ピンク  - 19/4/25(木) 8:28 -

引用なし
パスワード
   ▼永遠の超初心者 さん:

If Cells(iR, iC).Value <> "" Then
  buf = Cells(iR, iC).Value
  If Not Dic.Exists(buf) Then
    Dic.Add buf, buf
    Dic.Item(buf) = Dic.Item(buf) + Cells(1, iC).Value
         ↓
    Dic.Item(buf) = Cells(1, iC).Value

------------------------------------------------
MsgBox "" + 100
この様な事をしてエラーになっていたの
・ツリー全体表示

【80731】Re:Dictionaryでの値集計
質問  永遠の超初心者  - 19/4/25(木) 8:00 -

引用なし
パスワード
   ピンク様
ありがとうございます。
思い通りの結果が出せました。
その上、随分スマートにしていただきました。

ただ、前述のコードは色々なサイトを参考に書いたものなのですが
どこに不備があるのかわかりません。
今後の参考のためにご指摘いただけるとありがたいです。
・ツリー全体表示

【80730】Re:シート複数選択印刷について
発言  マナ  - 19/4/24(水) 19:54 -

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

>  strSN = ActiveSheet.Range("A1").Value
>  strSN = ActiveSheet.Range("B1").Value
>  strSN = ActiveSheet.Range("C1").Value


このままでは、3つの値を変数に同時いれることはできません。
配列にするとよいです。

  Dim strSN(1 to 3) as String

  strSN(1) = ActiveSheet.Range("A1").Value
  strSN(2) = ActiveSheet.Range("B1").Value
  strSN(3) = ActiveSheet.Range("C1").Value

  Worksheets(strSN).Printout
・ツリー全体表示

【80729】Re:Dictionaryでの値集計
回答  ピンク  - 19/4/24(水) 17:02 -

引用なし
パスワード
   ▼永遠の超初心者 さん:

参考に
Sub Test1()
   Dim Dic As Object, c As Range
  
  Sheets("Sheet1").Activate
  Range("F91:G110").ClearContents

  Set Dic = CreateObject("Scripting.Dictionary")
  For Each c In Range("J51:CE81")
    If c.Value <> "" Then
      Dic(c.Value) = Dic(c.Value) + Cells(1, c.Column).Value
    End If
  Next
  Range("F91").Resize(Dic.Count, 1).Value = Application.Transpose(Dic.keys)
  Range("J91").Resize(Dic.Count, 1).Value = Application.Transpose(Dic.Items)
  Set Dic = Nothing
End Sub
・ツリー全体表示

【80728】シート複数選択印刷について
質問  Hiroshi  - 19/4/24(水) 15:50 -

引用なし
パスワード
   はじめまして

 VBAにてシートを複数選択し印刷するように組みたいのですが中々できないのでご教授をお願い致します。

A1  B1  C1 「A1、B1、C1」→印刷
A2  B2  C2 「A2、B2、C2」→印刷
A3  B3  C3 「A3、B3、C3」→印刷
・  ・  ・    ・
・  ・  ・    ・
・  ・  ・    ・
A100 B100 C100「A100、B100、C100」→印刷

 上記のセルにそれぞれのシート名が入っているのですが「A1、B1、C1」を作業グループとして印刷をするVBAを組もうとしております。シート名直接や配列、rangeでは複数選択できず上手く当てはまる物がないのでご教授をお願いします。

初めての質問になりますのでルール等反しておりましたらご指摘ください。


 いろんな方のサンプルを参考に組んでみたVBAですがこの場合だとC1セル名のシートしかアクティブになりませんでした。

Sub シート選択()

  Dim strSN As String

  ' 変数 strSN にアクティブシートの A1 セルの値を代入
  strSN = ActiveSheet.Range("A1").Value
  strSN = ActiveSheet.Range("B1").Value
  strSN = ActiveSheet.Range("C1").Value
  
  ' 変数 strSN の名前をもつシートをアクティブにする
  Worksheets(strSN).Select
  
  ' 変数 strSN の名前をもつシートの B1 セルをアクティブにする
  Worksheets(strSN).Range("A1").Select
  Worksheets(strSN).Range("B1").Select
  Worksheets(strSN).Range("C1").Select
  
End Sub
・ツリー全体表示

【80727】Dictionaryでの値集計
質問  永遠の超初心者  - 19/4/24(水) 15:50 -

引用なし
パスワード
   Dictionaryを使って、キーに対応するアイテムの合計を算出したいです。

キーとなる値=6桁の数値
アイテム=小数点を含む数値
キーの範囲=Range("J51:CE81")…一部空白セル有り
アイテムの範囲=Range("J1:CE1")…全て実装

下記のコードでは
(1)アイテムの合計はキーの数値にアイテムの数値が加算されたものになってしまいます。
 ex.キーが111111で,そのアイテムの合計が7.75の場合は111118.75
(2)試しにキーに文字列を代入すると★で"実行時エラー 13 型が一致しません"と出ます。

不備な点をご指摘ください。

Sub test()
Sheets("Sheet1").Activate
 Dim Dic As Object, buf, iR, iC, i, keys, iT
'管理ナンバー収集
Range("F91:G110").ClearContents
 Set Dic = CreateObject("Scripting.Dictionary")

 For iR = 51 To 81
  For iC = 10 To 83
   If Cells(iR, iC).Value <> "" Then
    buf = Cells(iR, iC).Value   'セルの値をbufに格納(キー)
     If Not Dic.Exists(buf) Then '未登録の場合
     Dic.Add buf, buf      'セルの値を登録
      Dic.Item(buf) = Dic.Item(buf) + Cells(1, iC).Value '対応する行1の値(アイテム)を加算していく★
     Else            '登録済みの場合
      Dic.Item(buf) = Dic.Item(buf) + Cells(1, iC).Value '対応する行1の値(アイテム)を加算していく
     End If
   End If
  Next iC
 Next iR
 
 keys = Dic.keys
 For i = 0 To Dic.Count - 1
  Cells(i + 91, 6) = keys(i) 'キーを表示
 Next i

 iT = Dic.Items
 For i = 0 To Dic.Count - 1
  Cells(i + 91, 10) = iT(i) 'アイテムを表示
 Next i
 
 Set Dic = Nothing
End Sub
・ツリー全体表示

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