[過去ログ] Excel VBA 質問スレ Part81 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
831(1): 2024/11/25(月)10:30 ID:2CaoOVjY(1) AAS
せいかい エディター
まちがい 工ディタ一
832: 2024/11/26(火)00:52 ID:YZFc2jAF(1) AAS
>>831
タも夕にしろよ
833: 2024/11/26(火)10:03 ID:HUZSegVv(1) AAS
せいかい エディター
まちがい 工デT夕一
834: 警備員[Lv.1][新芽] 2024/11/26(火)13:09 ID:9aujKz/s(1) AAS
せいかい エディター
まちがい 工〒゛T夕ー
835: 2024/11/27(水)08:56 ID:DvWkdvrP(1) AAS
そこまで崩していいんなら濁点も:にして、イはTよりλのが近くないか
836: 警備員[Lv.4][新芽] 2024/11/27(水)09:12 ID:QoeWWjIA(1) AAS
いや、一気にやったら続かないじゃない
837: 2024/11/27(水)12:57 ID:aPfi5OMm(1) AAS
Dim rg1, rg2 as Range
rg1 = Cells(1, 1) ' 2024-12-31
rg2 = Cells(2, 1) '(空欄)
rg2.value = rg1.value
このようにA1の"2014-12-31"をA2にコピーしようとすると、
A2のセルの値が45657になってしまいます
値そのままA2にコピーする方法をご教示いただきたくおもいます
よろしくお願いします
838(1): 2024/11/27(水)13:52 ID:MVMSa9+B(1/2) AAS
セルの値をそのままコピーするためには、コピー先のセルの数値形式を日付に設定する必要があります。以下のコードで、A1の値をA2にそのままコピーできます。
vba
Dim rg1 As Range, rg2 As Range
Set rg1 = Cells(1, 1) ' 2024-12-31
Set rg2 = Cells(2, 1) '(空欄)
rg2.Value = rg1.Value
rg2.NumberFormat = rg1.NumberFormat ' 数値形式をコピー
839(1): 2024/11/27(水)16:51 ID:HUtUy0ao(1) AAS
>>838
すみません、言葉足らずでした
A1には文字列がはいっており、
場合によっては日付のようにも見えますが、
日付ではないので、値は"2024-12-32"なども取り得ます
他から取得するデータなので、この文字列はどうしようもありません
この値を、VBAを用いて他のセルにコピーすると、
文字列なのに日付と解釈され、日時型の値としてコピーされてしまいます
これを防ぎたいというのが趣旨です
840(2): 2024/11/27(水)18:21 ID:jEDz14aM(1) AAS
>>839
値を文字列変数に取得
値の設定先セルの書式を文字列に
変数値を設定先に代入
とやりたいことそのまま書く
841(1): 2024/11/27(水)18:35 ID:MVMSa9+B(2/2) AAS
了解しました。それでは、A1の文字列が日付として解釈されないように、文字列としてコピーする方法をお教えします。以下のVBAコードを試してみてください。
vba
Dim rg1 As Range, rg2 As Range
Set rg1 = Cells(1, 1) ' "2024-12-32" などの文字列
Set rg2 = Cells(2, 1) ' コピー先のセル
rg2.Value = "'" & rg1.Value ' 値を文字列としてコピー
このコードでは、`rg1.Value`の前にシングルクオート(')を追加して、値を強制的に文字列としてコピーしています。これにより、A2セルにコピーした値が日付として解釈されるのを防ぐことができます。
842(1): 2024/11/28(木)18:36 ID:7vnqI5qM(1) AAS
.Value(デフォルトプロパティ)じゃなくて、.Textをコピーすればいいんじゃね
843(1): 2024/11/29(金)02:09 ID:YHfjDVN0(1) AAS
↓ これっともっとすっきり書けない?
If hoge > 75 Then
'処理1
Else
If hoge > 50 Then
'処理2
Else
If hoge > 25 Then
'処理3
Else
省4
844(1): 警備員[Lv.22] 2024/11/29(金)02:36 ID:DXctvJUW(1) AAS
すっきりじゃないかもしれないけど。
比較する条件がhogeだけならCase isでもいいと思う。select caseで調べてみて。
Select Case true
Case hoge>75
処理1
Case hoge>50
処理2
Case hoge>25
処理3
Case else
省2
845: 2024/11/29(金)03:40 ID:V3MBNjzV(1) AAS
>>843
抽象的な質問には無難な回答しかできない
Else と If をくっつければ End If が1回で済む
「処理」は Sub に飛ばして判定ロジックと分けると読みやすくなる
If hoge > 75 Then
Call 処理1
ElseIf hoge > 50 Then
Call 処理2
ElseIf hoge > 25 Then
Call 処理3
省3
846: 2024/11/29(金)04:47 ID:mI/xlHXJ(1) AAS
すっきり書けるかどうかは状況によるなあ
たとえばhogeが整数型で100点満点のテストの点数だったら、こういう書き方もできる
Select Case hoge
Case 0 To 25
処理1
Case 26 To 50
処理2
Case 51 To 75
処理3
Case 76 To 100
省2
847: 2024/11/29(金)07:48 ID:ckuwcooG(1) AAS
>>840-842
ダメでした
しかも詳細を書こうとするともう余所エラーが出ます
848: 2024/11/29(金)13:07 ID:sw8AErMv(1/5) AAS
文字列型変数の値は"2024-12-31"でも、
Range型のValueプロパティに代入すると勝手にシリアル値が代入される
フォーマットもGeneralからyyyy/m/dに変わる
849: 2024/11/29(金)13:08 ID:sw8AErMv(2/5) AAS
代入元が"2024-12-32"の時は、代入先のセルも同値が入る
850: 2024/11/29(金)13:08 ID:sw8AErMv(3/5) AAS
"'2024-12-31"をセルに代入し、
MID関数で"'"を取りのぞいても、やはりシリアル値になる
簡単にできると思っていたことが難しいです…
上下前次1-新書関写板覧索設栞歴
あと 152 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.127s*