X



Excel VBA 質問スレ Part62

■ このスレッドは過去ログ倉庫に格納されています
0001
垢版 |
2019/06/24(月) 00:21:37.48
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part61
http://mevius.5ch.net/test/read.cgi/tech/1556203263/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0311デフォルトの名無しさん (ブーイモ MMba-ipzv)
垢版 |
2019/07/12(金) 21:24:19.02ID:uqHBg6aCM
何がどうスレチなのか本人理解していない
本当にExcelを起動させたことだけはあるってレベルなんだろうな
それにしても相対参照なんてはじめてのExcelみたいなテキストの初めのほうに出てくるのに理解不能な専門用語って…
0315デフォルトの名無しさん (ワッチョイ 1709-YtL5)
垢版 |
2019/07/12(金) 22:12:20.02ID:smOphNvK0
>>313
出ている問題文を区切って単語単位でいくつか検索しましたよ。
・・・ですが基礎知識が皆無なので分からない単語が更に増えていくばかりで意味がなかった。
答えにたどり着いていたとしてもそれが答えなのかどうかもわからない。
理由は単純明快で”どこどこ”が分からない等ではなく”excelの全てが”分からないからです。>>311さんの言う通りexcel起動したこともないので
まあ此処では教えてもらえないでしょうね
0319デフォルトの名無しさん (ワッチョイ 1ada-AvHN)
垢版 |
2019/07/12(金) 22:30:53.10ID:Es4UsF4s0
そういやあっちのスレに、OSがWindows10で、バージョンはExcelって書いてるな。

バージョンがExcelって何だよ?
一体どんな環境で勉強してるんだ?
紙だけでやろうとしたら、そりゃわからんわ。
0321956 (スププ Sdba-4ml8)
垢版 |
2019/07/12(金) 23:16:14.01ID:XVv52DQ4d
Excel起動したこともないって、完全にやる気ないんじゃん
実際にやっても見ずに文字だけ見たってわかるわけがない、そんなの知識あるなしは関係ない
なんでそれをそんなにドヤって語れるんだ
ほんとに身勝手だな…
0329デフォルトの名無しさん (ワッチョイ 1a2f-i8Xk)
垢版 |
2019/07/13(土) 07:30:37.64ID:URTJU5cT0
問題に親切にも、教科書P99とか、レポート第3回参照とか書いてあるけどな

99ページ超えるような教科書と、過去3回以上のレポート提出があって
エクセルの知識ゼロとか言うあたり、どうしようもないな
0330デフォルトの名無しさん (スッップ Sdba-oxAJ)
垢版 |
2019/07/13(土) 09:00:32.20ID:/hcsiiwtd
人に教える能力がない奴に限って大声で叫ぶ
分からないなら黙ってりゃ良いのに出しゃばるなってw
>>287さんのような人は素晴らしい
0333デフォルトの名無しさん (ワッチョイ db8e-RA7T)
垢版 |
2019/07/13(土) 10:27:47.26ID:BOO56W8H0
>>330
こんな馬鹿に回答を示すやつが馬鹿だろ
0334デフォルトの名無しさん (スッップ Sdba-oxAJ)
垢版 |
2019/07/13(土) 10:33:21.62ID:/hcsiiwtd
>>333
反応するお前も馬
0338デフォルトの名無しさん (ワッチョイ dbd0-qIdb)
垢版 |
2019/07/13(土) 13:32:22.46ID:WjcplQ3r0
これまで発掘された投稿(日付順)
ttps://mevius.5ch.net/test/read.cgi/bsoft/1556754363/731-
>>263
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12210409122
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10210410850
ttp://www.excel.studio-kazu.jp/kw/20190711212238.html

ttps://mevius.5ch.net/test/read.cgi/bsoft/1556754363/806,809
>期日までに全て正解した状態で完了しないと出席足りてても単位にならない
>期日は7/24 1,2回しか提出チャンスはない
→通信制あるいは定時制?

ttps://gyazo.com/1c48e5087536c8b403b6f8ef9131b00c
>2019情報処理R4-5
0340956 (スププ Sdba-4ml8)
垢版 |
2019/07/13(土) 14:19:52.14ID:gczMvB9Ad
なんか手当たり次第だな
しかも行く先々で自己中で上からだし、根っからそういう性格なんだな…
こんな事で時間浪費するより先生に聞くなり泣きつくなりした方が早いのに
0353デフォルトの名無しさん (ワッチョイ dbf1-Xwip)
垢版 |
2019/07/15(月) 12:11:27.76ID:nnQ6IJ0T0
VBAでクラスのメンバに配列がpublicで宣言できないのです。
これはなぜですか?
privateならできるようです
そういう仕様になった背景に異常に興味があるのですがなぜでしょうか?
0355デフォルトの名無しさん (ワッチョイ dbf1-Xwip)
垢版 |
2019/07/15(月) 12:29:52.78ID:nnQ6IJ0T0
>>354
いやgetter, setterのPublic Functionを作って使った
0357デフォルトの名無しさん (ワッチョイ dbf1-Xwip)
垢版 |
2019/07/15(月) 14:16:26.74ID:nnQ6IJ0T0
>>356

問題ないわよ
0365デフォルトの名無しさん (ワッチョイ 9a01-DHp5)
垢版 |
2019/07/15(月) 19:30:49.08ID:ex33LrHm0
>>364
> VBAできたのOffice95だろ?
Excel だけは先行しててExcel 5.0から
Office 95からWordとかAccessにも搭載された
> 16bitに毛が生えたようなリソースで
配列は32KB制限とかあるからリソース関係って言うのはあり得ると思う
0368デフォルトの名無しさん (ワッチョイ 0b01-YggF)
垢版 |
2019/07/15(月) 21:34:48.93ID:P4vPK//00
Sub Sample()
Dim rng As Range, i As Integer, RangeArea As String, RowCount As Integer
RangeArea = InputBox("選択したいセル範囲を入力してください", "セル範囲入力")
Range(RangeArea).Select
i = 1
For Each rng In Selection
rng.Value = i
i = i + 1
Next rng
RowCount = Selection.Rows.Count
Selection.Copy
Selection(Selection.Rows.Count, 1).Offset(2).Select
Selection.PasteSpecial xlPasteAll, Transpose:=True
Application.CutCopyMode = False
End Sub



このコードの最初の部分のセル範囲を選択するところをapplication.inputboxに変更したいのですが、やり方がわかりません。どうかご教示ください。
0369デフォルトの名無しさん (ワッチョイ 0e68-AvHN)
垢版 |
2019/07/15(月) 21:46:33.77ID:pIjNztNi0
>>368
これで普通に動いたんだが

Sub Sample()
Dim rng As Range, i As Integer, RangeArea As String, RowCount As Integer
RangeArea = Application.InputBox("選択したいセル範囲を入力してください", "セル範囲入力")
Range(RangeArea).Select
i = 1
For Each rng In Selection
rng.Value = i
i = i + 1
Next rng
RowCount = Selection.Rows.Count
Selection.Copy
Selection(Selection.Rows.Count, 1).Offset(2).Select
Selection.PasteSpecial xlPasteAll, Transpose:=True
Application.CutCopyMode = False
End Sub
0379デフォルトの名無しさん (ワッチョイ 1791-ipzv)
垢版 |
2019/07/16(火) 19:47:18.06ID:OkBSeMU90
>>378
だから変数じゃないし。
プロパティーだし。
クラスがpublicな変数持ってるという考えが既に変に感じる。
勿論、内部にprivateな変数を持ってるのは当然だけど。

カプセル化等という言葉では無く(実際はその通りだけど)、感覚としてオブジェクトというものを捉えていれば普通の感覚。
0381デフォルトの名無しさん (ブーイモ MMff-D7xh)
垢版 |
2019/07/16(火) 20:04:05.57ID:Qwm6v/XnM
>>379
同じだなんて言ってないでしょ?

> クラスがpublicな変数持ってるという考えが既に変に感じる。

なんで??
勝手に触っちゃダメとか変更に弱くなるいうのはわかるが、それ以外の理由を持ってるみたいだね?
0382デフォルトの名無しさん (ワッチョイ 1791-ipzv)
垢版 |
2019/07/16(火) 20:20:17.00ID:OkBSeMU90
>>381
カプセル化と結局一緒だけど、オブジェクト志向的に自然な考えからするとpublicな変数というのが変。
オブジェクトに意味のない数値がくっ付いてるイメージだね。

Excelでいうとセルに何故か変数がくっ付いていて、それがセルに関わるValueとかLeftとかそういう"意味付け"も持っていない感じ。
0383デフォルトの名無しさん (ワッチョイ 1791-ipzv)
垢版 |
2019/07/16(火) 20:23:52.51ID:OkBSeMU90
クラスというのはオブジェクトを設計するわけだから意味の無いものをくっ付けるのは設計として違和感がある。
そして、意味が有るものはプロパティーとして設計するから自然にGET、LETを使ってた。
0384デフォルトの名無しさん (ワッチョイ 0e68-AvHN)
垢版 |
2019/07/16(火) 20:24:21.96ID:lW4DFx/50
>>373
そもそもvbaでクラスを作る事は本当にない
ブックがpublicみたいに見えるから今更privateとかにしても仕方ない

実際はprivateブックの下位に書いてるからpublicに見えるだけなんだろうけど、まぁ同じ
0386デフォルトの名無しさん (ワッチョイ dbd0-qIdb)
垢版 |
2019/07/16(火) 21:09:04.93ID:B8vpu2Gm0
>>385
うまい言葉が見つからんが、ようは「宗教観の違い」ってやつじゃないか?
たぶん>>383の言いたいこととしては、
「プロパティにアクセスしてGetなりLetなりSetなりできるのに、
 この上Publicにして外部モジュールからメンバ変数への直接参照を可能にする意味があるのか?(設計おかしくね?)」
みたいな感じじゃないかなと思う。
0389デフォルトの名無しさん (ワッチョイ dbd0-qIdb)
垢版 |
2019/07/16(火) 22:55:41.34ID:B8vpu2Gm0
>>388
>GetもLetもできるならPublic変数でよくね?
そういうところが「宗教観の違い」なんだろうと思ったわけで。
>>383がこう思ってるんじゃないかなと思って書いただけだから、実際言いたいことは違うかもしれんし。
0394デフォルトの名無しさん (ワッチョイ 0e68-AvHN)
垢版 |
2019/07/17(水) 21:54:24.06ID:1fZng5Go0
程々が一番なんだけど、vbaに至ってはその采配がマジで難しい
普通は使い勝手の悪い言語は全自動で廃れるけど、恐らく唯一無二で太古の使い勝手のまま広まってしまった言語
どうしても荒れると思うし、正解もない
0398デフォルトの名無しさん (ワッチョイ fff7-ShKg)
垢版 |
2019/07/18(木) 17:33:44.07ID:iWlQ47rb0
まちがえた
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With Selection
If .Columns.Count >= 20 Then
Excel.Application.EnableEvents = False
.Resize(.Rows.Count, 19).Select
Excel.Application.EnableEvents = True
End If
End With

End Sub
0402デフォルトの名無しさん (ワッチョイ fff7-ShKg)
垢版 |
2019/07/18(木) 20:19:45.62ID:iWlQ47rb0
もし19列目(T列)移行を選択しないようにするって意味なら以下
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ActCel As Excel.Range
Set ActCel = ActiveCell
With ActCel
If .Column >= 20 Then
Set ActCel = Cells(.Row, 19)
End If
End With
Dim cngRng As Excel.Range
With Target
If .Column > 20 Then
Set cngRng = Range(Cells(.Row, 19), Cells(.Row + .Rows.Count - 1, 19))
ElseIf .Column + .Columns.Count > 20 Then
Set cngRng = Range(Cells(.Row, .Column), Cells(.Row + .Rows.Count - 1, 19))
End If
End With
Excel.Application.ScreenUpdating = False
Excel.Application.EnableEvents = False
If Not cngRng Is Nothing Then
cngRng.Select
ActCel.Activate
End If
Excel.Application.EnableEvents = True
Excel.Application.ScreenUpdating = True
End Sub
0403デフォルトの名無しさん (ワッチョイ 4f91-9KOF)
垢版 |
2019/07/18(木) 21:09:01.60ID:Vm+OSKMy0
’こんな感じじゃなくて?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim rng As Range
  Set rng = Intersect(Columns("A:T"), Target) '20まで
  If Not rng Is Nothing Then
    rng.Select
  Else
    Cells(1, 1).Select 'エラー時A1を選択
  End If

End Sub
0407デフォルトの名無しさん (ワッチョイ 3f8a-8mHW)
垢版 |
2019/07/20(土) 05:25:11.57ID:TdLuYGU30
どんな状況で使うんだそれwww
勝手に削除するやつがいるのか?
0409デフォルトの名無しさん (スップ Sddf-9W53)
垢版 |
2019/07/20(土) 07:37:09.15ID:vf/4Yo8ld
Worksheet_Changeイベント内で

if Target.Columns.Count=Columns.Count Then

の中に、コピーされた時を想定してデータを貼り付けた時に特定のセルを消してます。

このイベントは行削除も行挿入もif中に入ってくるので、その2つの場合は除きたいんですけど、無理ですかね?
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況